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

标签 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 但不包含 $之后

如何在 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!

关于ruby - Vagrantfile:如何传递带有未转义美元符号的主机环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57223572/

相关文章:

git - git pre-receive hooks 可以评估传入的提交吗?

hadoop - hadoop fs -ls 上的连接被拒绝

ruby-on-rails - 使用 Windows 为 Ruby on Rails 启动脚本/控制台

Ruby 正则表达式得到由句点分隔的单词组合

ruby - 使用 Rails 验证来确定 View

linux - 使用 tail -F 实时查看文件变化

php - 如何从 * PHP 或 bash 进行长轮询?

ruby-on-rails - 每次 Controller 或模型更改时,Rails 5 都会重新启动服务器

ruby-on-rails - 如何在 Rails 上禁用 "Cannot Render Console from..."

ruby - 如何解决错误消息 "Cannot find module ' abbrev'