是否有必要在shell命令中添加%Q?

时间:2017-06-16 03:26:00

标签: vagrant

我现在看到了一个Vagrant配置:

host.vm.provision :shell, inline: %Q|sudo sh -c 'echo "Defaults env_keep +=\"ETCD_ENDPOINTS\"" >>/etc/sudoers'|

这是%Q的含义?如果不使用它,可以很好地运作吗?

1 个答案:

答案 0 :(得分:1)

%Q|...|引用 shell命令(包含其定义)的一种方式,在在Vagrant配置文件中定义的上下文中;它不是shell命令本身的一部分。

Vagrant是用Ruby编写的,Ruby的%Q - 前缀引用机制是一种方便的方法来封装一个包含 embedded '和{{引号(作为包含shell命令的字符串可能有),无需担心转义这些字符。在该字符串的定义中。