在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配置器中按预期运行。不幸的是,我需要回车以使新配置正常工作。