シェルスクリプトを書いているとしましょう。任意の数のコマンドライン引数を取り、それらをコマンドラインユーティリティに渡します。そのユーティリティを呼び出すときは、各引数の前にフラグを付ける必要があります。スクリプトでこれをエスケープする正しい方法は何ですか?ユーティリティはシェルスクリプトとまったく同じ文字列を見ることができますか?
具体例:に正規表現を渡しgrep
ます。ラッパースクリプトを実行します。
./findit.sh needle "old socks" "spare change"
そして、あなたはgrep
それらの引数をマッチ式として呼び出すことを期待しています:
grep haystack.txt -e needle -e "old socks" -e "spare change"
-e
物事を複雑にしているのはプレフィックスです。不要な場合は、単に使用できます"$@"
。grep
引数が適切にエスケープされるようにするために、スクリプトは何をする必要がありますか?これを行うポータブルな方法はありますか?