【发布时间】:2018-05-29 18:18:40
【问题描述】:
我有一个 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:第 13 行:let:key-to-something:语法错误:操作数 预期(错误标记是“key-to-something”)
所以它实际上把它换掉了,但我不能把它保存到一个变量中。
【问题讨论】:
-
如果你只是想分配一个变量,你不能只做
farmid="$base$key"吗?即删除let。 -
您可以切换
vars.config以将所有内容存储在一个关联数组中吗?declare -A domains=([something.com]='key-to-something' [else.something.com]='key-to-something-else') -
- 如果我删除 let,farmid 将被存储为“something_com_key”,而不是配置中定义的 something_com_key 的值。 @RobertSeaman - 我还有其他变量我想做同样的事情。比如 something_com_id、something_com_user。