Linux 在shell脚本中读取矩阵中的值
它仅指定值3 5 和印刷品Linux 在shell脚本中读取矩阵中的值,linux,bash,matrix,Linux,Bash,Matrix,它仅指定值3 5 和印刷品 2 3 4 5 可以通过以下几种方式使用索引算法模拟二维阵列。以下是一种常见的方法: 3 3 5 5 通过一些额外的格式化,您可以制作一个漂亮的模拟2D阵列: $ bash sim2darray.sh 1 2 3 4 1 2 3 4 POSIX shell中没有数组,你在说什么shell?在任何其他数据库中都没有二维数组,因此不清楚您在尝试什么。@DavidC.Rankin bash shell您能做的最好的事情是用索引算法模拟二维数组,您是如何填写
2 3
4 5
可以通过以下几种方式使用索引算法模拟二维阵列。以下是一种常见的方法:
3 3
5 5
通过一些额外的格式化,您可以制作一个漂亮的模拟2D阵列:
$ bash sim2darray.sh
1
2
3
4
1 2
3 4
POSIX shell中没有数组,你在说什么shell?在任何其他数据库中都没有二维数组,因此不清楚您在尝试什么。@DavidC.Rankin bash shell您能做的最好的事情是用索引算法模拟二维数组,您是如何填写
a
?你不能读[i][j]
。你能给我一些关于数组声明部分的提示吗?
#!/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
#!/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 ]]