この変数がawkに渡されないのはなぜですか? [コピー]

この変数がawkに渡されないのはなぜですか? [コピー]

重複の可能性:
awkの外部変数

以下でこの変数を渡すには?

これはうまくいきません:

fname=testfile.txt
lsof | awk '/deleted/&&/$fname/ {print $4}'  *----no output*

これが働いている間:

lsof | awk '/deleted/&&/testfile.txt/ {print $4}'
3r

答え1

これは、シェル変数が一重引用符で拡張されないために発生します。パターンを次のように渡すには、awkwithを使用します。-vawk

fname=testfile.txt
lsof | awk -v pattern="$fname" '/deleted/ && $0 ~ pattern { print $4 }'

関連情報