Vagrantfile:将内联 shell 脚本的结果分配给变量

Vagrantfile: Assign result of inline shell script to variable

我想将 Vagrantfile 中内联 shell 脚本的退出代码分配给变量:

FOO = config.vm.provision "shell", 
env: {
  "FILE" => "/tmp/hello"
},
inline: <<-SHELL
  [ -f "$FILE" ]; echo $?
SHELL

然后在我的 Vagrantfile 中使用它,例如:

if FOO != 0
  ...

我试的方法显然不行。这里有谁知道

  1. 如果可能并且
  2. 如果是,怎么做?

我最终使用了 this 之类的方法。

我在此过程中发现的一点是,Vagrantfile 中的所有 Ruby 条件在一开始就被评估,尽管这些条件(如果有的话)中的内联 Shell 脚本是 同时评价。这会导致一些奇怪的行为,我可以按照上面所说的方式避免这种行为。

登陆这里后,我意识到您实际上可以分配命令退出代码的输出,如 ruby:

FOO = `mycommand`
BAR = $?.exitstatus

然后在 Vagrantfile 中将其用作任何其他变量。