2016-05-10 30 views
0

ksh93スクリプトでは、2次元配列を使用しようとしています。 各セルを文字列 "B1"で初期化する必要があります。ここ は、私のコードの一部です:配列の初期化でksh93 "subscript out of range"エラーが発生する

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

関連する問題