bash - タイトルが変数であり、他の変数を含む文字列値を持つ変数を生成できますか?

bash - タイトルが変数であり、他の変数を含む文字列値を持つ変数を生成できますか?

他のコマンドを実行するために繰り返す配列があります。次の項目に進む前に配列値として実行する最後の作業は、配列値を名前として変数を作成し、他の変数を含む文字列を割り当てることです。

現在私のコードは次のとおりです。

for i in ${array[@]} do
    some command
    $i_value="my string including other variables ${other_variable}"
done
echo $i_value

これを実行すると、次のエラーが発生し、配列値(インポートされた値)で変数を生成するのではなく、ファイルを見つける理由がわかりません。

line 5: *value*_value=my string including other variables *other_variable*: no such file or directory.

ベストアンサー1

foo_value変数などを外部で生成する必要がなく、単にスクリプトで使用する必要があるbar_value場合は、連想配列を使用する必要があります。このように:

declare -A values
for i in "${array[@]}"; do
    # some commands...
    values[$i]="my string including other variables ${other_variable}"
done
echo "${values[$i]}"

# loop over the keys:
for key in "${!values[@]}"; do
    echo "values has key '$key'"
done

(スペースとワイルドカードを含む値を適切に処理するには、周囲に引用符を付けたいので、"${array[@]}"その前にはセミコロンが必要であることに注意してくださいdofor i in ...; do

おすすめ記事