Bash - 変数名に変数を使用する方法

Bash - 変数名に変数を使用する方法

はい、はい、おそらく「同じ質問をする人が何百人もいます」と思います。しかし、私は次のことをしたくありません。

foo="example1"
bar="example2"
foobar="$foo$bar"

私はこれをしようとしています:

foo="example1"
$foo="examle2"

ただし、これを試みるたびに、次のエラーメッセージが表示されます。

bash: example1=example2: command not found

どんな提案がありますか?可能ですか?

ベストアンサー1

ここにいくつかの例があります。

declare [-g] "${foo}=example2"
declare -n foo='example1'
foo='example2'
eval "${foo}=example2"
mapfile -t "${foo}" <<< 'example2'
printf -v "${foo}" '%s' 'example2'
IFS='' read -r "${foo}" <<< 'example2'
typeset [-g] "${foo}=example2"

他のユーザーが言ったように、evalこの一般的に間接的な割り当てに注意してください。

おすすめ記事