これが私のスクリプトです(指定されたパターンを含むファイルを見つけるため):
find . -type f \
-exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \;
引数付きのスクリプトを使用したい§:
MyScript.sh pattern
私の問題は、$1
変数をに入れることができないことawk
です。
スクリプトをデバッグしようとすると
bash -x MyScript.sh pattern
これが出力です:
+ find . -type f -exec awk -v vawk=pattern '// {c++} c>0 {print ARGV[1] ; exit 0 } END { if (! c) {exit 1}}' '{}' ';'
$vawk
変数が空であるように思われます。
何か案が?
awk
C-などにエスケープシーケンスを展開する$1
場合のアプローチは仕事をしないように、$1
バックスラッシュ文字(正規表現のための一般的な)を含むことができます。ENVIRON
代わりにawk特殊配列を使用できます。