仅在vagrant中使用sed unterminated s命令

时间:2018-01-14 10:05:16

标签: sed vagrant

在Vagrant配置脚本中使用sed时,我有奇怪的sed行为。

我需要修改mongo DB的默认mongod.conf文件的一行,以下sed命令从标准命令行启动时工作正常:

sudo sed -i "s/#security:/security:\n  authorization: enabled/g" /etc/mongod.conf

或者当它包装在shell脚本中时,它也可以工作:

#!/bin/sh    
sudo sed -i "s/#security:/security:\n  authorization: enabled/g" /etc/mongod.conf

但是如果我在vagrant配置文件脚本中使用相同的命令:

@mongo_security_and_user_setup = <<SCRIPT
    sudo sed -i "s/#security:/security:\n  authorization: enabled/g" /etc/mongod.conf
SCRIPT

我收到错误:

  

sed:-e表达式#1,字符25:未终止的's'命令

我当然可以创建一个shell脚本并从配置器运行它,从而绕过问题,但我想知道为什么会失败。

我知道这是在我向命令添加\n时引起的,因为没有\n它在Vagrant配置器中按预期运行。不幸的是,我需要回车以使新配置正常工作。

0 个答案:

没有答案