ループインしたい配列が2つあります。それらを適切に構築し、forループに入る前に、それらをエコーして、すべてが配列に問題がないことを確認します。しかし、スクリプトを実行すると、エラーが出力されます。
l<=: syntax error: operand expected (error token is "<="
強力なGoogleに相談したところ、2番目の変数が不足していることがわかりましたが、前述したように、値をエコーするので、すべて問題ないようです。これがスニペットです。
#!/bin/bash
k=0
#this loop is just for being sure array is loaded
while [[ $k -le ${#hitEnd[@]} ]]
do
echo "hitEnd is: ${hitEnd[k]} and hitStart is: ${hitStart[k]}"
# here outputs the values correct
k=$((k+1))
done
k=0
for ((l=${hitStart[k]};l<=${hitEnd[k]};l++)) ; do //this is error line..
let array[l]++
k=$((k+1))
done
forループの変数は正しくエコーされますが、forループは機能しません。どこが間違っていますか?
#gniourf_gniourfが答えたように:
「...ある時点で、kは値$ {#hitEnd [@]}に到達します。これは、hitEnd [k]が定義されておらず、空の文字列に展開されるときです!Bang!」
つまり、エラー出力はループの先頭ではなく、kの値が配列のインデックスよりも大きい場合、配列に含まれていないインデックスを指します。