Bash 使用另一个变量分配变量

Bash assign variable using another variable

我不太确定标题的措辞,但我想做的是将 username 设置为 $DEV_ENVIRONMENT$STAGE_ENVIRONMENT$PROD_ENVIRONMENT,每一个都在我的属性文件中定义。

我的函数将接受一个参数(DEVSTAGEPROD)并根据 $_ENVIRONMENT.[=25 中定义的边缘检查主机名=]

while IFS=',' read -ra line
do
        for i in "${line[@]}"
        do
                if [ $(hostname) = $i ]
                then
                        username=""_USERNAME
                        break
                fi
        done
done <<< "_ENVIRONMENT"

例如,如果我传入 DEV,那么我希望 username 设置为 $DEV_USERNAME,并且我希望 while 循环进行搜索$DEV_ENVIRONMENT 中定义的节点,它们都是从我的属性文件中读取的值。

Bash支持indirection expansion,所以你可以这样做:

var=_ENVIRONMENT
username=${!var}

而不是稍微麻烦且有潜在危险的评估:

eval username=$_ENVIRONMENT

因此对于您的代码:

while IFS=',' read -ra line
do
        for i in "${line[@]}"
        do
                if [ $(hostname) = $i ]
                then
                        var=""_USERNAME
                        username=${!var}
                        break
                fi
        done
done <<< "_ENVIRONMENT"