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
...
我试的方法显然不行。这里有谁知道
- 如果可能并且
- 如果是,怎么做?
我最终使用了 this 之类的方法。
我在此过程中发现的一点是,Vagrantfile 中的所有 Ruby 条件在一开始就被评估,尽管这些条件(如果有的话)中的内联 Shell 脚本是 不同时评价。这会导致一些奇怪的行为,我可以按照上面所说的方式避免这种行为。
登陆这里后,我意识到您实际上可以分配命令退出代码的输出,如 ruby:
FOO = `mycommand`
BAR = $?.exitstatus
然后在 Vagrantfile
中将其用作任何其他变量。
我想将 Vagrantfile 中内联 shell 脚本的退出代码分配给变量:
FOO = config.vm.provision "shell",
env: {
"FILE" => "/tmp/hello"
},
inline: <<-SHELL
[ -f "$FILE" ]; echo $?
SHELL
然后在我的 Vagrantfile 中使用它,例如:
if FOO != 0
...
我试的方法显然不行。这里有谁知道
- 如果可能并且
- 如果是,怎么做?
我最终使用了 this 之类的方法。
我在此过程中发现的一点是,Vagrantfile 中的所有 Ruby 条件在一开始就被评估,尽管这些条件(如果有的话)中的内联 Shell 脚本是 不同时评价。这会导致一些奇怪的行为,我可以按照上面所说的方式避免这种行为。
登陆这里后,我意识到您实际上可以分配命令退出代码的输出,如 ruby:
FOO = `mycommand`
BAR = $?.exitstatus
然后在 Vagrantfile
中将其用作任何其他变量。