/bin/sed:-e表达式#1,字符56:“s”的未知选项

/bin/sed:-e表达式#1,字符56:“s”的未知选项

我有下一个文件测试.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"

相关内容