#!/bin/bash
declare -a array
printf 'Matrix size:' ;
read n;
printf '\n';
for ((i=1;i<=n;i++))
do
for((j=1;j<=n;j++))
do
printf 'x[%d][%d]=' ${array[i][j]};
read array[i][j];
done
done
echo "Initial matrix:"
for((i=1;i<=$n;i++))
do
for ((j=1;j<=n;j++))
do
printf '%d' ${array[i][j]};
printf '\n';
done
done
Run Code Online (Sandbox Code Playgroud)
A无法显示bash数组而且不明白我的错误在哪里.例如我有:n = 3 ....我在数组中输入数字(1-9)当我显示时:初始矩阵:3 3 3 6 6 6 9 9 9 Thx
bash没有多维数组; 当你引用时array[i][j],会[j]被忽略.bash还有其他限制,往往使它不适合这种事情,例如不支持浮点数学(本机,无论如何).
如果你需要在bash中伪造一个多维数组,你可以通过使用array[i*n+j]存储数组[i] [j] 伪造它:
#!/bin/bash
declare -a array
read -p 'Matrix size: ' n
for ((i=1; i<=n; i++)); do
for ((j=1; j<=n; j++)); do
read -p "x[$i][$j]=" array[i*n+j]
done
done
echo "Initial matrix:"
for ((i=1; i<=n; i++)); do
for ((j=1; j<=n; j++)); do
printf '%d ' ${array[i*n+j]}
done
printf '\n'
done
Run Code Online (Sandbox Code Playgroud)
请注意,我已对您的代码进行了一些额外的清理:
read -p而不是printf.printf在字符串中插入变量,只需嵌入$i双引号字符串(或用于${i}避免变量名称末尾的含糊不清).