シェルスクリプト:特定のグローバル変数を選択するには、keywardを使用します。

シェルスクリプト:特定のグローバル変数を選択するには、keywardを使用します。

シェルスクリプトに同じパターンを持つグローバル変数が複数あります。たとえば、次のようになります。

VALID_DOMESTIC_ANIMAL=(cat dog)
VALID_ACQUATIC_ANIMAL=(shark dolphin)

これでACQUATIC / DOMESTICである可能性がある別のパラメーターCATAGORYがあります。繰り返す予定のグローバル変数を選択するには?次のコードを試しました。

#!/bin/bash
VALID_DOMESTIC_ANIMAL=(cat dog)
VALID_ACQUATIC_ANIMAL=(shark dolphin)

CATAGORY=ACQUATIC
VALID_CATAGORY_ANIMAL=VALID_${CATAGORY}_ANIMAL
#echo "VALID_CATAGORY_ANIMAL ${VALID_CATAGORY_ANIMAL}"
for anime in "${VALID_CATAGORY_ANIMAL[@]}"; do
    echo "${anime}"
done

出力を期待していましたが、shark dolphin結果が出ました。VALID_ACQUATIC_ANIMAL

同じ名前の変数が存在する場合は、それを使用するようにbashスクリプトにどのように指示しますか?

ベストアンサー1

ありがとうスチールドライバー進む道を指す変数 - 和集合。私はnamerefを使用していますが、私には効果的です。次の変更を実行すると成功しました。

-VALID_CATAGORY_ANIMAL=VALID_${CATAGORY}_ANIMAL
+declare -n VALID_CATAGORY_ANIMAL=VALID_${CATAGORY}_ANIMAL

おすすめ記事