notebook

都内でWEB系エンジニアやってます。

シェルスクリプトで変数の値を変数として扱う

シェルスクリプトで変数の値を変数として扱う

シェルスクリプトを書いていて変数の値を変数として扱いたいみたいな状況が出てきてちょっとはまったのでメモ

オプションによって使う変数を変えたい場合などに有効かなと思います。

実行時にsh test.sh aaaと入力された場合はis aaash 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の中身を見るスクリプトを作ってたんですが、シェルスクリプトのところで詰ってしまったので結構時間を取ってしまった。

ややこしいけど便利そうなので使って行きたい