我有一个由两个文件组成的 shell 脚本,一个 bash 文件 (main.sh) 和一个包含我所有配置变量的文件 (vars.config)。
变量配置
domains=("something.com" "else.something.com")
something_com_key="key-to-something"
else_something_com_key="key-to-something else"
在我的代码中,我想遍历域数组并获取域的 key 。
#!/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: syntax error: operand expected (error token is "key-to-something")
所以它实际上把它换掉了,但我不能把它保存到一个变量中。
最佳答案
您可以使用 ${!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
关于linux - 根据输出从配置文件中解析变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50590584/