それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

bashで可変変数(抽象化)をする。

bash でも変数名の変数を使えます。

php では variable variable (可変変数)、javascript では obj[name]() などとやります。

関数名や変数名を、変数に確保しておき後で使ったり、動的に変数名をつくって変数を参照するなどするときに使われます。java などは class の reflection をしたりで少々厄介だった記憶があります。

もちろんスクリプト言語(ときに逐次インタプリタ)なのでeval / $() //でも実現出来ますが。圧倒的にかんたんなので知っておくと役立ちます。

a=${varname} で殆どの場合解決するんで余り出番はないかもしれません。

bash の 変数名の文字列 indirect access

少し例を見てみます。変数名を格納した文字列の変数にアクセスする例です。

# 間接的アクセス
a=takuya
name=a
echo my name is ${!name}
# 実行結果
my name is takuya

導入されたバージョン

bash 2

参考資料

http://www.tldp.org/LDP/abs/html/bashver2.html