2016-05-10 11 views
0

В сценарии ksh93 я пытаюсь использовать массив из двух измерений. Мне нужно инициализировать каждую ячейку строкой «B1». Вот часть моего кода:Ошибка ksh93 «индекс вне диапазона» в инициализации массива

#!/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 

Thx для вашей помощи. B²

+0

В bash ваш базовый код завершается с ошибкой, и мне нужен 'array [$ i, $ j, $ k]'. Это работает для вас? –

+0

После прочтения вашего имени я понимаю B ** 2, но это может смутить других читателей. –

ответ

0

Наконец-то мне удалось выяснить, что случилось. Для ведения журнала я начинал свой скрипт, используя sh + x scriptname.sh , но этот скрипт использует ksh93. поэтому правильная командная строка для запуска - ksh93 + x scriptname.sh

Извините за эту глупую ошибку. B²