ある変数の名前を使用して別の変数を参照するには? [コピー]

ある変数の名前を使用して別の変数を参照するには? [コピー]
a=2
pt2=3
echo $a
2
echo $pt2
3

どうやって使うの?

echo $pt($a)

pt2内容を印刷しますか?

別のオプションは

b=pt$a
echo $b
pt2
echo $[$b]
3

ベストアンサー1

a=2
pt2=3
eval "echo \"\${pt$a}\""

3

または:

b=pt$a
eval "echo \"\${$b}\""

3

他の方法もあります:

a=2
pt2=3
export "pt$a=$((pt$a + $(echo pt$a)))"
echo $((pt$a))

6

exporteval後で危険性の低い方法でこの方法で作業できますが、必要に応じて後でエクスポートしないことがあります。そして、$((arithmetic =割り当ては))現在のシェルの現在のコマンドに影響します。したがって、値が数値の場合、直接変数の割り当てはまだ安全です。

変数の割り当てを2回評価するために使用されるシェルも.dotあります。<<HEREDOCS

var1=var2 ; . <<HEREDOC /dev/stdin
    $var1=val
HEREDOC

echo $var2

val

おすすめ記事