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 FSet 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)