从 env 读取动态变量

从 env 读取动态变量

假设我有一个环境变量:

  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+),您可以使用关联数组并避免整个混乱……但是您的脚本确实不是不便携。

相关内容