数组初始化时ksh93“下标超出范围”错误

时间:2016-05-10 06:59:36

标签: arrays ksh aix

在ksh93脚本中,我正在尝试使用二维数组。 我需要用字符串“B1”初始化每个单元格。 这是我的代码的一部分:

#!/bin/ksh93
num_cols=192
echo Number of cols : $num_cols
#init matrix to blank
echo initialize the matrix
i=1
while [ $i -le $num_rows ]; do
    j=1
    while [ $j -le $num_cols ]; do
        matrix[$i][$j]="B1"
        echo $matrix[$i][$j]
        j=$(($j+1))
    done
    i=$(($i+1))
done

当我执行此操作时,我收到了该错误,我无法找出原因:

+ num_cols=192
+ echo echo Number of cols : 192 echo Number of cols : 192
+ echo initialize the matrix initialize the matrix
+ i=1
+ [ 1 -le 15 ]
+ j=1
+ [ 1 -le 192 ]
+ matrix2html.sh[38]: matrix: subscript out of range

我也尝试过这个基本代码作为测试,它运行良好:

#!/bin/ksh93
for i in 1 2 3
do
   for j in 4 5 6
   do
       for k in 7 8 9
       do
           array[$i][$j][$k]=$(( i + j + k ))
#          echo ${array[$i][$j][$k]}
       done
   done
done

for i in 1 2 3
do
   echo ${array[$i][4][7]}
done

谢谢你的帮助。 B 2

1 个答案:

答案 0 :(得分:0)

最后,我设法弄清楚出了什么问题。 为了记录目的,我使用sh + x scriptname.sh开始我的脚本 但该脚本使用的是ksh93。 所以启动它的正确命令行是ksh93 + x scriptname.sh

抱歉这个愚蠢的错误。 B 2