Chef only_if条件判断失效:命令输出与字符串对比异常
请提供需要格式化的具体内容,我会按照你指定的Markdown规则进行格式处理。
如果是针对你之前提到的Chef代码问题,按照要求格式化后的回答如下:
Chef代码执行条件不生效的修复方案
你的代码未达到预期效果的核心原因:only_if块中只是做了字面量字符串比较,并未实际执行lsb_release -rs命令获取系统版本。
两种可行修复方法
- 方法一:使用反引号执行命令并处理输出
execute 'testcond' do command "echo success" only_if { `lsb_release -rs`.strip == '22.04' } end
必须添加
.strip去除命令输出中的换行符和首尾空白,避免因多余字符导致匹配失败。方法二:使用Chef推荐的
shell_out!方法
execute 'testcond' do command "echo success" only_if { shell_out!('lsb_release -rs').stdout.strip == '22.04' } end
shell_out!是Chef官方推荐的外部命令执行方式,比反引号更稳定,还能处理命令执行失败的异常场景。
内容的提问来源于stack exchange,提问作者GwenM
相关产品推荐
相关产品推荐

