Vagrantfile:如何传递带有未转义美元符号的主机环境变量?

时间:2019-07-26 16:05:00

标签: ruby bash vagrant vagrantfile vagrant-windows

如果我在适当的位置将这样的内容添加到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中解决此问题?

1 个答案:

答案 0 :(得分:2)

在@ matt-schuchard的提示下,我将其添加到Vagrantfile的顶部:

需要“ shellwords”

并更改

env:{“ MY_VARIABLE” => ENV ['CONTAINS_A_DOLLAR_SIGN']}

env:{“ MY_VARIABLE” => Shellwords.escape(ENV ['CONTAINS_A_DOLLAR_SIGN'])}

现在vagrant up输出before$after不仅是before