次のコードを使用して設定ファイルを読み込み、パラメータ値を取得しようとしています。
#!/bin/bash
app=ag
echo $app
#works if actual value of $app is used in quotes
processes=$(awk -F ' *= *' '$1=="ag"{print $2}' conf.cfg)
#doesn't work if trying to derive from variable
processes=$(awk -F ' *= *' '$1=="$(echo $app)"{print $2}' conf.cfg)
processes=$(awk -F ' *= *' '$1==\""$app"\"{print $2}' conf.cfg)
上記の処理で変数値はどのように使用されますかawk
?
答え1
必要な結果を正しく理解したら、次のような構造を使用する必要があります。
processes=$(awk -v APP="${app}" -F ' *= *' '$1 ~ APP {print $2}' conf.cfg)
-v - argument assignment
よくわかりませんが、知識ベースでグローバル変数を使用するawkの例が見つかりませんでした。よりエレガントなサンプルがあるかもしれません。