Ksh
Unix 環境變數名中的變數替換
我設置了以下 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 的內容,而不是給出實際的分支名稱。
你想要的是變數間接使用
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
請使用小寫或大寫變數。導出的變數應為大寫,局部變數應為小寫。