如何将带空格的参数传递给sed命令?

时间:2012-06-13 06:36:56

标签: linux bash shell

我在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'

有没有办法用空格来做?

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

sed -i "s/<div id=\"$1\"><p>*.*</<div id=\"$1\"><p>$2</" /var/www/html/alarm.html

答案 1 :(得分:2)

尝试使用转义字符:

fnChangeTxt 'demo' 'This\ text\ to\ sed'