Estou tentando criar um aplicativo spritz. Tudo estava funcionando bem, mas desde ontem eu continuo recebendo este erro:
./spritz: linha 176: erro de sintaxe: final inesperado do arquivo
Eu verifiquei o arquivo de script e tudo parece perfeito. Estou confuso, tenho uma declaração if finalmente e parece correta! Aqui está a última 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
O que poderia causar esse erro?
"$1"
, "$2"
, "$SECONDS"
, e "$starttime"
. (3) É mais fácil ler e depurar códigos recuados corretamente. (4) Por que você está configurando FS
e depois não o está usando? (5) `…`
pode ser escrito $(…)
. (6) $(($SECONDS - $starttime))
pode ser equivalente $((SECONDS - starttime))
. Novamente, isso é basicamente uma questão de estilo. (7) Por que você está imprimindo "$words_read"
no loop quando não o está modificando?
`grep …`
por uma lista de valores. Em outras palavras, use o processo de eliminação.
"$1"
precisa ser citado, (anúncio 4) provavelmente ele quis dizer IFS
(e não FS
)?
;
ponto-e-vírgula sem escape no final de uma linha . Você pode excluir os pontos e vírgulas no final das linhas 157, 161, 165, 168 e 169. (Ou você pode deixá-los dentro; acho que é uma questão de estilo.)… (Continua)