Sto cercando di creare un'app spritz. Tutto funzionava bene, ma da ieri continuo a ricevere questo errore:
./spritz: riga 176: errore di sintassi: fine imprevista del file
Ho controllato il file di script e tutto sembra perfetto. Sono confuso, ho finalmente un'istruzione if e sembra corretto! Ecco l'ultima parte:
#checks if speed is 150
157 if [[ $2 -eq 150 ]];
158 then
159 starttime=$SECONDS
160 FS=$'\n'
161 for j in `grep --color=always -iP '\b[^aeiou\s]*[aeiou][^aeiou\s]*\K[aeiou]' $1`;
162 do
163 #Reads the text file in the centre of the screen
164 echo " ___________________"
165 echo " $j";
166 echo " ___________________"
167 echo " Speed 150 wpm"
168 sleep 0.9;
169 clear;
170 done
171 endtime=$(($SECONDS - $starttime))
172 echo "You read $words_read words in $endtime seconds!"
173 exit 8
174 fi
Cosa potrebbe causare questo errore?
"$1"
, "$2"
, "$SECONDS"
, e "$starttime"
. (3) È più facile leggere ed eseguire il debug del codice indentato correttamente. (4) Perché si imposta FS
e quindi non lo si utilizza? (5) `…`
può essere scritto $(…)
. (6) $(($SECONDS - $starttime))
può essere scritto in modo equivalente $((SECONDS - starttime))
. Ancora una volta, questo è fondamentalmente un problema di stile. (7) Perché stampi "$words_read"
nel ciclo quando non lo modifichi nel ciclo?
`grep …`
con un elenco di valori. In altre parole, utilizzare il processo di eliminazione.
"$1"
citare, (annuncio 4) probabilmente intendeva IFS
(e non FS
)?
;
punto di fuga (punto e virgola) alla fine di una riga . Puoi eliminare i punti e virgola alle estremità delle righe 157, 161, 165, 168 e 169. (O puoi lasciarli dentro; suppongo sia una questione di stile.) ... (continua)