次の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
小文字または大文字の変数を使用してください。エクスポートした変数は大文字で、ローカル変数は小文字で入力する必要があります。