次の内容のbashスクリプトreplace.shがあります。
ack-grep -a -l -i --print0 --text "$1" | xargs -0 -n 1 sed -i -e 's/$1/$2/g'
たとえば、次のように実行しようとすると:
replace.sh 何か新しいもの
プロンプトはエラーなしで返されますが、どのファイルも変更されていません。手動で入力した場合:
ack-grep -a -l -i --print0 --text "something" | xargs -0 -n 1 sed -i -e 's/something/somethingelse/g'
ファイルは期待どおりに変更されます。
この $1 構文は、私が書いた他のスクリプトでも機能するようです。引数のエスケープなどに関係する何かが欠けていると思いますか?
ありがとう!
ルード。