3
Bash脚本,字符串未正确替换为转义的$和&字符
我创建了一个shell脚本,该脚本以字符串作为输入。如果字符串包含$或&,则需要用\$和替换这些字符\&。我可以用sed命令做到这一点。之后,我想用该对应的字符串替换特定文本文件中的单词。 请参阅本节以获取更多说明。 这是我的档案。 test.txt hello my root password is root. 现在,我想用字符串更改词根。该字符串可以是任何可以包含特殊字符(如$或)的东西&。 如果我想root用字符串替换my&rootpa$$,那么它应该看起来像my\&rootpa\$\$文本文件中的字符串。 这是我的外壳 #!/bin/bash dothis(){ rootpass=$(echo "$1" | sed -r 's/\$/\\$/g'); rootpass=$(echo "$rootpass" | sed -r 's/\&/\\&/g'); echo $rootpass; sed -i "s/root/$rootpass/g" test.txt } dothis "my&rootpa$$"; 该脚本可以正常运行echo $rootpass,也就是说,当我回显字符串时,它将显示my\&rootpa\$\$。 但是在文件中看起来my&rootpa$$不是my\&rootpa\$\$。脚本出了什么问题? 请指教。