Синтаксическая ошибка: ожидается операнд при использовании Bash
У меня есть два массива, которые я хочу зациклить. Я строю их правильно и перед тем, как перейти к циклу for, я повторяю их, чтобы убедиться, что с массивами все в порядке. Но когда я запускаю скрипт, он выдает ошибку:
l<=: syntax error: operand expected (error token is "<="
Я проконсультировался с могущественным Google, и я понял, что страдает от отсутствия второй переменной, но я упоминал ранее, что я повторяю значения, и все, кажется, в порядке. Вот фрагмент
#!/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 имеет большее значение, чем индексы массива, указывая на индекс, который массив не включает ...