我有下一个文件测试.txt内容:
- name: MONGODB_HOST
value: {{MONGODB-HOST}}
我想更换{{MONGODB-主机}}使用这个环境变量:
MONGODB_HOST=server.dev.example,server2.dev.example
命令是:
/bin/sed -i 's,{{MONGODB-HOST}},'"$(MONGODB_HOST)"',' "test.txt";
它失败了:
/bin/sed: -e expression #1, char 56: unknown option to `s'
如果我离开:
MONGODB_HOST=server.dev.example
有用。你能帮我找出失败的原因吗?
答案1
在您的sed
命令中,您使用,
符号来分隔字段。您的替换还包括该符号,因此当sed
看到它时,它认为这是字段分隔符。最终它看到了“真实的”字段分隔符,并看到了它后面无法识别的内容。
尝试使用不同的字段分隔符;/
是一个常见的选择:
/bin/sed -i 's/{{MONGODB-HOST}}/'"${MONGODB_HOST}"'/' "test.txt"