我在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'
有没有办法用空格来做?
提前致谢。
答案 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'