J'essaie de créer une application spritz. Tout fonctionnait bien, mais depuis hier, je reçois toujours cette erreur:
./spritz: ligne 176: erreur de syntaxe: fin de fichier inattendue
J'ai vérifié le fichier de script et tout semble parfait. Je suis confus, j'ai enfin une déclaration if et ça a l'air correct! Voici la dernière partie:
#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'est-ce qui pourrait provoquer cette erreur?
"$1"
, "$2"
, "$SECONDS"
et "$starttime"
. (3) Il est plus facile de lire et de déboguer du code mis en retrait correctement. (4) Pourquoi configurez-vous FS
et ne l'utilisez-vous pas? (5) `…`
peut être écrit $(…)
. (6) $(($SECONDS - $starttime))
peut être écrit de manière équivalente $((SECONDS - starttime))
. Encore une fois, c'est essentiellement une question de style. (7) Pourquoi imprimez-vous "$words_read"
dans la boucle alors que vous ne le modifiez pas dans la boucle?
`grep …`
par une liste de valeurs. En d'autres termes, utilisez le processus d'élimination.
"$1"
besoin que de citer, (annonce 4) il voulait probablement dire IFS
(et non FS
)?
;
(point-virgule) non échappé à la fin d'une ligne . Vous pouvez supprimer les points-virgules à la fin des lignes 157, 161, 165, 168 et 169. (Ou vous pouvez les laisser; je suppose que c'est une question de style.)… (Suite)