Estoy tratando de crear una aplicación de spritz. Todo funcionaba bien, pero desde ayer sigo recibiendo este error:
./spritz: línea 176: error de sintaxis: final inesperado del archivo
He revisado el archivo de script y todo parece perfecto. Estoy confundido, ¡tengo una declaración if por fin y parece correcta! Aquí está la última porción:
#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
¿Qué podría causar ese error?
"$1"
, "$2"
, "$SECONDS"
, y "$starttime"
. (3) Es más fácil leer y depurar el código que está sangrado correctamente. (4) ¿Por qué lo configura FS
y luego no lo usa? (5) `…`
se puede escribir $(…)
. (6) $(($SECONDS - $starttime))
se puede escribir de manera equivalente $((SECONDS - starttime))
. Nuevamente, esto es básicamente una cuestión de estilo. (7) ¿Por qué imprime "$words_read"
en el bucle cuando no lo modifica en el bucle?
`grep …`
con una lista de valores. En otras palabras, use el proceso de eliminación.
"$1"
necesita ser citado, (anuncio 4) ¿probablemente quiso decir IFS
(y no FS
)?
;
punto y coma sin escape al final de una línea. . Puede eliminar los puntos y comas en los extremos de las líneas 157, 161, 165, 168 y 169. (O puede dejarlos dentro; supongo que es una cuestión de estilo.) ... (Continúa)