2016-12-05 10 views
2

次のシナリオがあります。シェル内の変数の値の取得

#!/bin/bash 
export avalue_name="stack" 
LOOPERS=${LOOPERS:-avalue} 
for LOOPER in $(echo "$LOOPERS" | tr ',' "\n") 
do 
    actualVar="$LOOPER""_name" 
    echo "actualVar - $actualVar" 
done 

出力は

actualVar - avalue_name 

私は出力が、私はそれをどのように行うだろう

actualVar - stack 

になりたいのですか?

私は$($LOOPER_name)を試しました。どちらもうまくいきません。

+1

'$ LOOPER_name'はどこで宣言していますか?どうぞご覧ください:http://www.shellcheck.net/ – Cyrus

+0

問題のスクリプトを更新しました。 – sattu

答えて

3

二つのアプローチ:


中間変数を使用し、その上にシェルの間接参照を使用します。をお勧めしません

$ avalue_name="stack" 

$ LOOPER=avalue 

$ temp="${LOOPER}_name" 

$ echo "${!temp}" 
stack 

またはevalを使用し、

​​3210 個の

ポイント:変数を参照しながら、あなたは別の有効な変数構成文字が直前または直後にあるとき{}とそれを囲む必要があるので、

  • _は、有効な変数構成文字であること

  • 絶対に必要でない限り、環境変数との混同を防ぐために、すべての大文字をユーザ定義変数に使用しないでください。

関連する問題