我正在尝试将Shell脚本中的字符串替换为具有特殊字符的字符串:
name="test&commit"
echo "{{name}}" | sed "s/{{name}}/$name/g"
我得到的结果是
test{{name}}commit
我知道在&之前添加\将使其起作用,但是名称param由用户指定,因此我希望我的代码以某种方式进行预测。有人知道如何实现这一目标吗?
您需要使用另一个sed命令在给定输入字符串中的所有特殊字符之前添加反斜杠。
$ name="test&commit"
$ name1=$(sed 's/[^[:alpha:][:digit:][:blank:]]/\\&/g' <<<"$name")
$ echo $name1
test\&commit
$ echo "{{name}}" | sed "s/{{name}}/$name1/g"
test&commit
它会被最小化,因为
$ name="test&commit"
$ echo "{{name}}" | sed "s/{{name}}/$(sed 's/[^[:alpha:][:digit:][:blank:]]/\\&/g' <<<"$name")/g"
test&commit
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句