根据输出从config-file解析变量

时间:2018-05-29 18:18:41

标签: linux bash shell unix

我有一个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:语法错误:操作数   预期的(错误令牌是"键到什么")

所以它实际上是把它换掉了,但我不能把它保存到变量中。

1 个答案:

答案 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