awkでシェル変数を使用する

awkでシェル変数を使用する

これは私のスクリプトです(指定されたパターンを含むファイルを見つけるため)。

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

おすすめ記事