シェルスクリプトで変数の値を変数として扱う
シェルスクリプトを書いていて変数の値を変数として扱いたいみたいな状況が出てきてちょっとはまったのでメモ
オプションによって使う変数を変えたい場合などに有効かなと思います。
実行時にsh test.sh aaa
と入力された場合はis aaa
、sh test.sh bbb
と入力された場合はis bbb
と表示させたいとか
test.sh
opt='aaa' aaa='is aaa' bbb='is bbb' # 変数名自体を変数にしたい場合 eval echo \"\$$opt\" # is aaa opt='bbb' aaa_echo='test aaa' bbb_echo='test bbb' # 変数名の後に文字列を加えた場合 eval echo \$"$opt"_echo # is bbb
eval を使うことで一度変数を評価してから実行することが出来るようになる
sshでinformation_schemaの中身を見るスクリプトを作ってたんですが、シェルスクリプトのところで詰ってしまったので結構時間を取ってしまった。
ややこしいけど便利そうなので使って行きたい