これは私のスクリプトです(指定されたパターンを含むファイルを見つけるため)。
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
が空のようです。
どんなアイデアがありますか?
ベストアンサー1
awk変数とシェル変数を混同しているようです。 awk -v vawk="$1"
作るアッ変数名が指定されましたが、vawk
使用しようとしています。シェル構文($vawk
)。シェルにという変数がないため、機能しませんvawk
。私の考えでは、あなたが望むもの
awk -v vawk="$1" '$0 ~ vawk { c++ } # ...'
# ^ awk variable syntax