我试图运行一个命令,并比较其输出,但似乎我的波纹管代码是不是工作,因为我希望它。
execute 'testcond' do command "echo success" only_if {"lsb_release -rs" == '22.04'} end
kxe2p93d1#
您正在使用的保护依赖于{ }中表达式的返回状态。您的表达式更像是比较两个字符串lsb_release -rs和22.04。其计算结果为false,并且如预期的那样跳过执行。我建议使用Chef收集的关于节点的节点属性。
{ }
lsb_release -rs
22.04
execute 'testcond' do command 'echo success' only_if { node['platform_version'] == '22.04' } end
如果您想使用该命令,我们可以在变量中获取该命令的结果,然后在only_if guard中进行比较。
only_if
distro_ver = `lsb_release -rs` execute 'testcond' do command 'echo success' only_if { distro_ver.chomp! == '22.04' } end
注意,我想使用chomp作为命令的输出,添加一个换行符(\n)。
chomp
\n
1条答案
按热度按时间kxe2p93d1#
您正在使用的保护依赖于
{ }
中表达式的返回状态。您的表达式更像是比较两个字符串lsb_release -rs
和22.04
。其计算结果为false,并且如预期的那样跳过执行。我建议使用Chef收集的关于节点的节点属性。
如果您想使用该命令,我们可以在变量中获取该命令的结果,然后在
only_if
guard中进行比较。注意,我想使用
chomp
作为命令的输出,添加一个换行符(\n
)。