読者です 読者をやめる 読者になる 読者になる

notebook

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

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

shellscript

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

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

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

実行時に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の中身を見るスクリプトを作ってたんですが、シェルスクリプトのところで詰ってしまったので結構時間を取ってしまった。

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