我有一个shell脚本,包含两个文件,一个bash文件(main.sh)和一个包含所有配置变量(vars.config)的文件。
vars.config
domains=("something.com" "else.something.com")
something_com_key="key-to-something"
else_something_com_key="key-to-something else"
在我的代码中,我想遍历域数组并获取域的密钥。
#!/usr/bin/env sh
source ./vars.config
key="_key"
for i in ${domains[@]};
do
base="$(echo $i | tr . _)" # this swaps out . to _ to match the vars
let farmid=$base$key
echo $farmid
done
因此,当我运行它时,我收到一条错误消息
./ main.sh:line 13:let:key-to-something:语法错误:操作数 预期的(错误令牌是"键到什么")
所以它实际上是把它换掉了,但我不能把它保存到变量中。
答案 0 :(得分:1)
您可以使用${!var_name}
将变量展开为其值,例如,您可以在代码中执行此操作:
key="_key"
for i in ${domains[@]};
do
base="$(echo $i | tr . _)" # this swaps out . to _ to match the vars
farmid=$base$key
farmvalue=${!farmid}
echo $farmvalue
done