You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:17:06