[英]output of unix command in chef recipe
我在厨师食谱中有一个execute
命令,我想将cwd
属性设置为unix命令的输出。
execute 'run dynamically generated install file' do
command 'make install'
cwd '' # would like the output of `ls -Adrt /tmp/unixODBC.* | tail -n 1`
end
这可能吗?
好的,最后终于可以使用键盘了,可以全部写出来。
您所拥有的内容的字面翻译为:
execute 'run dynamically generated install file' do
command 'make install'
cwd lazy { shell_out!('ls -Adrt /tmp/unixODBC.* | tail -n 1').stdout.strip }
end
但是,这将比所需的速度慢得多,并且更容易出现故障,因此我建议改用Ruby编写它:
execute 'run dynamically generated install file' do
command 'make install'
cwd lazy { Dir['/tmp/unixODBC.*'].first }
end
这样避免了必须产生大量进程,而不必直接执行相同(我认为)的逻辑。
您应该能够像下面这样:
execute 'run dynamically generated install file' do
command 'make install'
cwd `ls -Adrt /tmp/unixODBC.* | tail -n 1`
end
似乎超出了execute
块的范围。
也许只是使用ruby_block
?
ruby_block 'run dynamically generated install file' do
require 'mixlib/shellout'
block do
cmd = Mixlib::ShellOut.new('make install')
cmd.run_command
cwd = cmd.stdout
# Do more stuff with cwd...
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.