gpt4 book ai didi

ruby - Chef Recipe : can't capture output from backticks to variable in ruby_block

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:16 24 4
gpt4 key购买 nike

我有一个包含 ruby​​_block 的 Chef Recipe :

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。

最佳答案

可能是输出被定向到 STDERR 而不是 STDOUT。试试这个:

myoutput = `keytool -import -alias #{al} -keystore #{ks} -storepass #{pw} -file #{ca} -trustcacerts -noprompt 2>&1`

我没有任何要导入的证书来测试它,但是单独运行 `keytool` 会将输出发送到 STDERR,而 `keytool 2>&1` 工作正常.所以我猜这个应用程序会正常写入 STDERR(非常奇怪)。

关于ruby - Chef Recipe : can't capture output from backticks to variable in ruby_block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com