こんにちは。文字列を置き換える必要がありますが、「return false;」という文字列を使用するとエラーが発生します。
#!bin/bash
oldstring='{alert("bash")}'
newstring='{return false;}'
grep -rl $oldstring /home/commons.bundle.js | xargs sed -i s/$oldstring/$newstring/g
エラー: sh deleteBoo.sh sed: espressione -e #1, carattere 25: comando `s' 非終了者
答え1
grep -rlZF -- "$oldstring" /home/commons.bundle.js |
xargs -r0 sed -i "s/$oldstring/$newstring/g" --
以下の小さな変更を適用すると機能します。
-F
grepが渡された文字列を正規表現として評価しないように、grepを使用する必要があります。- 使用するもう1つのgrepオプションは、
-Z
null区切り文字を使用してファイル名をxargsに渡すことです。 - 受信側では、
-0
xargsを使用してファイル名を安全に解凍できるようになりました。 「法律」によっては、ファイル名にヌル値を含めることはできません。