における変数のプリント値は、私は私にバッシュ - 配列
A 123
B 143
C 999
の出力を与えるしかし、その代わりに、私は変数名ではなく、値を受け取る必要があり、この
A='123'
B='143'
C='999'
declare -a arr=(A B C)
for i in "{$arr[@]}"
do
echo "@i" "$i"
done
のような何かをしたいです出力に(私は、出力の「@i」を参照してください...
における変数のプリント値は、私は私にバッシュ - 配列
A 123
B 143
C 999
の出力を与えるしかし、その代わりに、私は変数名ではなく、値を受け取る必要があり、この
A='123'
B='143'
C='999'
declare -a arr=(A B C)
for i in "{$arr[@]}"
do
echo "@i" "$i"
done
のような何かをしたいです出力に(私は、出力の「@i」を参照してください...
あなたがループ内で変数名を保存するのではなく、それらの値をコピーしたい場合は、次のように使用することができます:
for i in "${arr[@]}"; do
echo "${!i}"
done
これはi
の値はの名前として取られることを意味しますしたがって、ループ内に$A
、$B
および$C
が返されます。
もちろん、これは変数名を同時に印刷できることを意味します。使用して:
echo "$i: ${!i}"
をそれはまったく同じではありませんが、あなたはまた、連想配列を使用することに興味がある可能性があり:
declare -A assoc_arr=([A]='123' [B]='143' [C]='999')
for key in "${!assoc_arr[@]}"; do
echo "$key: ${assoc_arr[$key]}"
done
私は$
を追加することをお勧め:
declare -a arr=("$A" "$B" "$C")
はい、私はそれは例えばが、代替であることを理解します現実私は、変数名と値の両方を出力できるようにしたいと思います。それは可能ですか? – Michael
優秀、これは私が探していたものです。 – Michael
@Michael連想配列の使用に興味があるかもしれません。 –