假设我有一个环境变量:
echo lmx_setting_foo="bar";
上面的环境变量的创建方式如下:
$ lmx set foo bar
确实如此:
export "lmx_setting_$2"="$3"
假设有人想要检索“foo”,他们会这样做:
$ lmx get foo
但如果我这样做:
echo "$lmx_setting_$2"
似乎不起作用
答案1
有几种方法可以解决这个问题,但最便携的可能是
eval "echo \$lmx_setting_$2"
但是避免 eval 的特定于 bash 的方法是
temp="lmx_setting_$2"
echo ${!temp}
如果以前没有,您应该打开 bash 手册页并向下滚动到参数扩展查看您的所有选项。您特别询问了环境变量,但如果您不需要导出这些变量并且您有足够新的 bash 版本(4.0+),您可以使用关联数组并避免整个混乱……但是您的脚本确实不是不便携。