文字列を変数名として利用したいことがある。
evalを利用すれば簡単に実現できた。
以下のサンプルでは、var_nameという文字列をそのまま変数名に利用する。
eval_sample1.sh
#!/bin/bash -ue
# 変数strにvar_name文字列を格納
str="var_name"
# evalを利用してvar_nameに"value"
eval $str="value"
# var_nameを表示
echo $var_name
また、変数に利用したい変数名を入れるようなスクリプトを作りたいことも多々ある。
この場合もevalを利用して一度文字列を展開すれば実行できる。
以下のサンプルではecho実行時に文字列を変数に展開した。
eval_sample2.sh
#!/bin/bash -ue
# 変数var_nameを定義
var_name="value"
# 変数strにvar_name文字列を格納
str="var_name"
# var_nameを表示
eval echo '$'$str