我在替换脚本内部的命令时遇到问题,脚本中的违规行如下所示:
mail -s "$(hostname) on $(date)"
它应该替换为这样的一行:
nail -r "sender@domain.com" -s "Subject" -S smtp=255.255.255.255
但我不能让他做替换:)我为此目的写了一个小脚本:
#!/bin/bash
old="mail -s \"\$(hostname) on \$(date)"
new="nail -r \"sender@domain.com\" -s \"Subject\" -S smtp=255.255.255.255"
sed -i 's|$old|$new|' script.sh
有人有任何建议吗?
答案 0 :(得分:3)
sed -i "s|$old|$new|" script.sh
请注意双引号。
答案 1 :(得分:1)
默认情况下,Sed不会进行场所编辑。如果你正在使用gnu sed尝试提供就地标志-ikbak
答案 2 :(得分:0)