変数値の置換

変数値の置換

次のコードを使用して設定ファイルを読み込み、パラメータ値を取得しようとしています。

#!/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の例が見つかりませんでした。よりエレガントなサンプルがあるかもしれません。

関連情報