変数の値を読むには、あなたは間接使用することができます:${!var}
を:
#! /bin/bash
j=1
val=get_5
var=SAMPLE${j}_CHIP
declare "$var"="$val"
echo "${!var}"
問題が変数の値を取得することです。
私は上記の宣言を使用し、知られているオプションは次のとおりです。
declare "$var"="$val"
printf -v "$var" '%s' "$val"
eval $var'=$val'
export "$var=$val"
最も危険なオプションは、evalのを使用することです。 var
またはval
の内容が外部ユーザーによって設定されている場合は、コードインジェクションを取得する方法を設定しています。今日は安全だと思われるかもしれませんが、何らかの理由で誰かがコードを編集した後、攻撃者に "入る"機会を与えるように変更される可能性があります。
おそらく最も良い解決策は、上記のすべてを避けることです。
連想配列
1つの選択肢は、連想配列を使用することです:
#! /bin/bash
j=1
val=get_5
var=SAMPLE${j}_CHIP
declare -A array
array[$var]=$val
echo "${array[$var]}"
かなりリスクの少ないが、あなたは似た名前のインデックスを取得します。
プレーンアレー
しかし、最も安全な解決策は、ソリューションの最も簡単な使用することであることは明らかである:
#! /bin/bash
j=1
val=get_5
array[j]=$val
echo "${array[j]}"
すべて行って、少しリスクを。
「bash」で変数コンテキストまたは配列コンテキストを使用する予定ですか? – Inian