bashの変数指定で、間接展開(!:エクスクラメーション)


他の人が作ったプログラムを見ていたら、以下のような指定がありました。

echo ${!xxxx}

なんだろうこれ、と思って調べたら、間接展開という表記法でした。
ようするに、変数の値を変数名として使用する、というもの。

local A=dat
local dat=123
echo ${A} → dat
echo ${!A} → 123

関数に変則的にデータを渡したい時に使えるのですが、
プログラムが見づらくなるし、直観的ではなくなるので、あまり利用しないかも。

他人のプログラムを見た時に、「これなんだっけ?」って時のためにメモとして残しておきます。


参考
http://kodama.fubuki.info/wiki/wiki.cgi/bash/tips?lang=jp#9