1

我希望将变量 SERVICE 替换为字符串 $service。我用过 sed

sed "s/SERVICE/$service/g"

问题是变量 $service 有特殊字符,如 ',[,],/,\,",?,` 等。$service 中特殊字符的顺序不固定。每当有特殊字符时像 $service 中的 " 一样,sed 无法正确替换它。有没有特殊字符不会干扰 sed 替换过程的解决方案。下面给出的答案对我不起作用,它说

sed: -e expression #1, char 107: unknown option to `s'
4

1 回答 1

3

尝试这样做:

sed "s@SERVICE@$(printf '%q' "$service")@g"
  • @是替代修饰符,可以是任何字符
  • printf '%q'为 shell 转义给定的字符串:

前任。

$ printf '%q' '*$!'
\*\$\!
于 2013-06-20T21:20:03.660 回答