yucken の業務上電脳 Tips 日記、なのだよ。-弐式-

いまさら電脳 Tips を書いてみむとして、するなり.元々は広い意味での電脳(コンピュータ)の Tips を書いていたのですが,いつのまにか,解析ツールの「電脳 ruby」の Tips がメインに.‥‥‥で,5 年間放置してたのだけどやはり Tips を書くブログがないと不便なのでふっかちさせたのであります.(・)>

シェルスクリプト内で 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 オプションでシェルを実行して実験すれば (試行錯誤のうえで) 分かるということ、が重要かもしれません。やっぱりデバッグモードは大切ですね