我希望变量SERVICE被字符串$ service替换。我用sed来做它
sed "s/SERVICE/$service/g"
问题是变量$ service有特殊字符,如',[,],/,\,“,?,`等等。$ service中特殊字符的顺序不固定。只要有一个特殊的字符,如“$ service内,sed无法正确替换它。是否存在特殊字符不会干扰sed替换过程的任何解决方案。下面给出的答案对我不起作用,它说
sed: -e expression #1, char 107: unknown option to `s'
答案 0 :(得分:3)
尝试这样做:
sed "s@SERVICE@$(printf '%q' "$service")@g"
@
是一个替代修饰符,可以是任何字符printf '%q'
转义shell的给定字符串:实施例
$ printf '%q' '*$!'
\*\$\!