Błąd składniowy: oczekiwany operand podczas używania Bash
Mam dwie tablice, które chcę zapętlić. Konstruuję je poprawnie i przed przejściem do pętli for wykonuję echo, aby upewnić się, że wszystko jest w porządku z tablicami. Ale po uruchomieniu skryptu generuje błąd:
l<=: syntax error: operand expected (error token is "<="
Konsultowałem się z potężnym Google i zrozumiałem, że cierpi na brak drugiej zmiennej, ale wspomniałem wcześniej, że powtarzam wartości i wszystko wydaje się być w porządku. Oto fragment ..
#!/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
Zmienne w pętli for są poprawnie wyświetlane, ale pętla nie działa ... gdzie się mylę?
#jako gniourf_gniourf odpowiedział:
„... W pewnym momencie k osiągnie wartość $ {# hitEnd [@]}, a to jest dokładnie wtedy, gdy hitEnd [k] nie jest zdefiniowane i rozwija się do pustego łańcucha! Bang!”
Oznacza to, że wyjście błędu jest wyświetlane nie na początku pętli, ale gdy k ma większą wartość niż indeksy tablicy, wskazuje indeks, którego tablica nie obejmuje ...