linux - 根据输出从配置文件中解析变量

标签 linux bash shell unix

我有一个由两个文件组成的 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/

相关文章:

PHP 上传文件和临时文件

Python子进程找不到csv writer的输出

bash - 计算所有子目录unix中的总目录和文件

linux - Linux 中的快速、半准确排序

c - 如何在 C 中执行 ls *.txt

linux - 在离线机器上的 CentOS 7 上安装 redhat-lsb

linux - 用于查看文件完整历史记录的 Gui 工具,包括移动或重命名的文件

linux - 在特定时间间隔后停止 Bash 脚本

linux - 如何在 Linux 上的 Bash 中一次删除多个文件?

bash - 使用 bash 脚本的未绑定(bind)变量