【发布时间】:2016-06-27 23:49:55
【问题描述】:
我有一个包含 ruby_block 的 Chef 食谱:
myoutput = `keytool -import -alias #{al} -keystore #{ks} -storepass #{pw} -file #{ca} -trustcacerts -noprompt`
puts ":" + myoutput + ":"
Chef::Log.error('Error installing CA Cert') unless myoutput.include? "Certificate was added to keystore"
(所有变量均已正确设置。)以下是相关输出:
Certificate was added to keystore
::
[2013-07-03T21:26:41-07:00] ERROR: Error installing CA Cert
注意 ::。为什么 myoutput 设置不正确?当我手动运行该命令时,我得到了预期的输出。反引号中的命令做了它应该做的事情,所以我知道它正在运行,但由于某种原因,命令的标准输出没有分配给 myoutput,我不知道为什么。有任何想法吗?谢谢——戴夫
编辑:原因是因为这个特定的“keytool”调用的输出将发送到 stderr,而不是 stdout。
【问题讨论】:
-
使用双引号来让你的变量解释年轻的学徒。
标签: ruby output chef-infra backticks