我在echo
矩阵元素中打印时遇到问题,当我在第一个循环中取消注释时echo ${matrix[$i,$j]}
,程序可以正常工作,但是当我要${matrix[$i,$j]}
在第二个循环中打印时,输出为空字符。目标是从文件中读取矩阵并将其分配给我在脚本中声明的矩阵。
function readMatrixFromFile() {
local file="$1"
declare -A matrix
local num_rows=$(awk 'NR==1 {print $3}' $1)
local num_colums=$(awk 'NR==2 {print $3}' $1)
for ((i=3;i<=num_rows+2;i++)) do
for ((j=1;j<=num_colums;j++)) do
k=i-2
matrix[$k,$j]=$(awk -v row=$i -v col=$j 'NR==row {print $col}' $file)
#echo ${matrix[$i,$j]}
done
done
for ((i=1;i<=num_rows;i++)) do
for ((j=1;j<=num_colums;j++)) do
echo ${matrix[$i,$j]}
done
echo
done
}
function Main() {
readMatrixFromFile Matrix3.txt
}
Main
这是Matrix3.txt
这是输出:
#!/bin/bash
declare -A m
read_matrix() {
local i=0
local line
local j
# Ignore the first 2 lines containing size of the matrix
read rows
read cols
while read -r line; do
j=0
# split on spaces
for v in `echo $line`; do
m[$i,$j]="$v"
j=$((j+1))
done
i=$((i+1))
done
}
read_matrix < matrix.file
echo ${m[1,2]}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句