【发布时间】:2019-11-15 17:20:09
【问题描述】:
在我的 bash 脚本中,我有一个外部(从用户接收)字符串,我应该在 sed 模式中使用它。
REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"
如何转义 $REPLACE 字符串,以便 sed 安全地接受它作为文字替换?
注意:KEYWORD 是一个没有匹配项等的哑子字符串。它不是由用户提供的。
【问题讨论】:
-
如果他们说“/g -e 's/PASSWORD=.*/PASSWORD=abc/g'”,您是否试图避免“小鲍比桌”问题?
-
如果使用 bash,则不需要 sed。只需使用
outputvar="${inputvar//"$txt2replace"/"$txt2replacewith"}". -
@destenson 我认为您不应该将这两个变量放在引号之外。 Bash 可以读取双引号内的变量(在您的示例中,空格可能会搞砸)。
-
@CamiloMartin,请参阅我对自己答案的评论。 ${} 内的引号与内的引号不匹配。这两个变量不在引号之外。