あなたが2Dアレイをシミュレートすることができいくつかの方法でインデックス演算を行うことができます。
#!/bin/bash
## read values into a 1D array using nested loops and
## simulated 2D addressing
for ((i = 0; i < 2; i++)); do
for ((j = 0; j < 2; j++)); do
read a[$((i * 2 + j))]
done
done
## Output the values contained in a simulated 2D manner
for ((i = 0; i < 2; i++)); do
for ((j = 0; j < 2; j++)); do
printf " %2d" ${a[$((i * 2 + j))]}
done
echo ""
done
出力
$ bash sim2darray.sh
1
2
3
4
1 2
3 4
あなたは見栄えのシミュレートされた2次元配列にすることができ、フォーマットのいくつかの追加ビットで:
#!/bin/bash
for ((i = 0; i < 5; i++)); do
for ((j = 0; j < 5; j++)); do
a[$((i * 5 + j))]=$((i * 5 + j))
done
done
printf "\nThe simulated 5x5 2D array:\n\n"
for ((i = 0; i < 5; i++)); do
[ "$i" -eq 0 ] && printf "[[" || printf " ["
for ((j = 0; j < 5; j++)); do
printf " %3d" ${a[$((i * 5 + j))]}
done
[ "$i" -eq 4 ] && printf " ]]\n\n" || printf " ]\n"
done
使用例をここでは一般的な方法であり、 /出力
$ bash sim2darray.sh
The simulated 5x5 2D array:
[[ 0 1 2 3 4 ]
[ 5 6 7 8 9 ]
[ 10 11 12 13 14 ]
[ 15 16 17 18 19 ]
[ 20 21 22 23 24 ]]
POSIXシェルには配列がありません。どのシェルについて話していますか?他には2D配列はありませんので、あなたが何をしようとしているのかは不明です。 –
@ DavidC.Rankin bash shell –
あなたができることは最高ですbashは索引算術を使って2D配列をシミュレートしていますが、どのように 'a'を埋めましたか? [i] [j]を読むことはできません。 –