Vagrantfile:如何传递带有未转义美元符号的主机环境变量?
Vagrantfile: How do I pass a host environment variable with an unescaped dollar sign in it?
如果我在 Vagrantfile
的适当位置添加这样的内容:
vm.provision "shell",
path: "my_node.sh",
env: {"MY_VARIABLE"=>ENV['CONTAINS_A_DOLLAR_SIGN']}
然后在我的 my_node.sh
中添加:
echo "$MY_VARIABLE"
如果我的 CONTAINS_A_DOLLAR_SIGN
环境变量是 before$after
我的 vagrant up
输出将包含 before
但不包含 $after
.
如何在 Vagrantfile
中解决此问题?
在@matt-schuchard 的提示下,我在 Vagrantfile 的顶部添加了这个:
require 'shellwords'
并改变
env: {"MY_VARIABLE"=>ENV['CONTAINS_A_DOLLAR_SIGN']}
到
env: {"MY_VARIABLE"=>Shellwords.escape(ENV['CONTAINS_A_DOLLAR_SIGN'])}
现在 vagrant up
输出 before$after
而不仅仅是 before
!
如果我在 Vagrantfile
的适当位置添加这样的内容:
vm.provision "shell",
path: "my_node.sh",
env: {"MY_VARIABLE"=>ENV['CONTAINS_A_DOLLAR_SIGN']}
然后在我的 my_node.sh
中添加:
echo "$MY_VARIABLE"
如果我的 CONTAINS_A_DOLLAR_SIGN
环境变量是 before$after
我的 vagrant up
输出将包含 before
但不包含 $after
.
如何在 Vagrantfile
中解决此问题?
在@matt-schuchard 的提示下,我在 Vagrantfile 的顶部添加了这个:
require 'shellwords'
并改变
env: {"MY_VARIABLE"=>ENV['CONTAINS_A_DOLLAR_SIGN']}
到
env: {"MY_VARIABLE"=>Shellwords.escape(ENV['CONTAINS_A_DOLLAR_SIGN'])}
现在 vagrant up
输出 before$after
而不仅仅是 before
!