我创建了一个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\$\$
。脚本出了什么问题?
请指教。
请不要跨端口访问多个SE网站。我看到您对超级用户有一个正确的答案。
—
user619714 2014年
嗨,我已经在SuperUser上发布了相同的问题,askubuntu也是如此。我有点急于得到答案。这有什么问题吗?
—
Uvais Ibrahim 2014年
是的,请不要这样做,因为它分散了答案,并被皱了皱眉。另外,您发现复制时可能会出错,这很麻烦。只是不要这样做。
—
user619714 2014年
感谢Lain的关注。我是所有这些的初学者。
—
Uvais Ibrahim 2014年