forループのエコー変数名

forループのエコー変数名

私はこれを持っています:

test1="1"
test2="2"
test3="3"

for i in "$test1" "$test2" "$test3"; do
        echo "$i"
done ;

$i内容ではなく変数名をエコーし​​たいです。

エコー出力は「test1」、「test2」、または「test3」でなければなりません。

どうすればいいですか?

ベストアンサー1

本当にしたい場合は、次のようにします。

#!/bin/bash
test1='1'
test2='2'
test3='3'
for v in "test1" "test2" "test3"; do
        echo "The variable's name is $v"
        echo "The variable's content is ${!v}"
done 

しかし、あなたはおそらく配列の使用を好む動的変数名の代わりに使用することは悪い習慣と見なされ、コードを理解するのが難しくなります。したがって、次のようなより良い形式を考えてみましょう。

#!/bin/bash
test[0]='1'
test[1]='2'
test[2]='3'
for ((i=0;i<=2;i++)); do
        echo "The variable's name is \$test[$i]"
        echo "The variable's content is ${test[$i]}"

done 

おすすめ記事