在bash脚本中使用sed replace命令?

时间:2009-09-17 12:15:46

标签: bash scripting sed

我在替换脚本内部的命令时遇到问题,脚本中的违规行如下所示:

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

有人有任何建议吗?

3 个答案:

答案 0 :(得分:3)

sed -i "s|$old|$new|" script.sh

请注意双引号。

答案 1 :(得分:1)

默认情况下,Sed不会进行场所编辑。如果你正在使用gnu sed尝试提供就地标志-ikbak

答案 2 :(得分:0)