2

シェルスクリプトに以下の関数があります

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 に答える