シェルスクリプト内で awk の条件文にシェルスクリプト内の文字変数を用いる
なんかタイトルが上手く書けない。つまり、シェルスクリプトで
name="yukinon"
という感じで定義した変数を使って
こういうテキストファイル (とりあえず、$bdlist としときましょうか)
yukinon 0103
gahama 0618
hikki 0808
から、2 列 (フィールド) 目の値を取り出したいような時の話。
色々と試行錯誤 (シェルを -x オプションを付けて実験) した結果、
bd=`awk '$1=='\"${name}\"' {print $2}' $bdlist`
で行けるらしい。"sh" の場合。
つまり、awk のシングルクォーテーションで囲まれた部分の中に
1. シングルクォーテーションのペアを挿入
2. その中にダブルクォーテーションを囲んだ変数を入れる
3. そのままだとダブルクォーテションを認識しないから \ を付けてエスケープする
…ああ、説明し難い。
上述の '\"〜\"' で囲むというのは汎用性がないかもしれないので、-x オプションでシェルを実行して実験すれば (試行錯誤のうえで) 分かるということ、が重要かもしれません。やっぱりデバッグモードは大切ですね