我设置了以下 Unix 环境变量。
export Dev_Branch=temp
export QA_Branch=stage
export Prod_Branch=master
现在我将环境名称作为脚本的输入,并且需要获取相应的分支名称。因此,如果用户输入“Dev”,它应该获取“temp”,“QA”应该让我“stage”,“Prod”应该让我“master”。
我正在使用的代码是
br_name=`echo \$"${1}"_Branch`
但 br_name 显示类似 $Dev_Branch 的内容,而不是给出实际的分支名称。
答案1
你想要的是变量间接使用nameref
:
$ export QA_Branch=stage
$ what="QA"
# ksh indirection
$ nameref br_name="${what}_Branch"
$ echo "$br_name"
stage
# dash indirection using eval, also works in ksh, bash
$ eval "br_name=\$${what}_Branch"
$ echo "$br_name"
stage
# bash indirection
$ br_name="$what"_Branch
$ echo "${!br_name}"
stage
请使用小写或大写变量。导出变量应为大写,局部变量应为小写。