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!