2

我的 shell 脚本中有以下函数

fnChangeTxt()
{
        sed -i 's/<div id="'$1'"><p>*.*</<div id="'$1'"><p>'$2'</' /var/www/html/alarm.html
}

我想使用下面的通过 $2 参数将字符串传递给 sed 命令。

fnChangeTxt 'demo' 'This text to sed'

然而这不起作用并产生错误,我认为这是由于空格,因为下面的命令工作正常。

fnChangeTxt 'demo' 'This_text_to_sed'

有没有办法用空格做到这一点?

提前致谢。

4

2 回答 2

3

将参数($1等)括在双引号中以防止它们被分词(并防止其他一些可能令人不快的额外解析):

sed -i "s/<div id=\"$1\"><p>*.*</<div id=\"$1\"><p>$2</" /var/www/html/alarm.html
于 2012-06-13T15:24:07.733 回答
2

尝试使用转义字符:

fnChangeTxt 'demo' 'This\ text\ to\ sed'
于 2012-06-13T06:48:30.847 回答