Erreur de syntaxe: fin de fichier inattendue – Script Bash [fermé]

Fermé . Cette question nécessite détails ou clarté . Il naccepte pas les réponses actuellement.

Commentaires

  • (0) Il aurait peut-être été plus utile de nous montrer une différence de la dernière version qui a fonctionné. …………………… Quelques observations (qui ne sont probablement pas liées à votre problème spécifique actuel): (1) Je ne connais aucune circonstance où vous avez besoin dun ; (point-virgule) à la fin dune 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 cest une question de style.)… (Suite)
  • (Suite)… (2) Vous devriez toujours citer les variables shell à moins que vous nayez une bonne raison de ne pas le faire et que vous soyez sûr de savoir ce que vous faites; par exemple, "$1", "$2", "$SECONDS" et "$starttime". (3) Il est plus facile de lire et de déboguer du code correctement mis en retrait. (4) Pourquoi définissez-vous FS et ne lutilisez pas ensuite? (5) `…` peut sécrire $(…). (6) $(($SECONDS - $starttime)) peut être écrit de manière équivalente $((SECONDS - starttime)). Encore une fois, cest essentiellement une question de style. (7) Pourquoi imprimez-vous "$words_read" dans la boucle alors que vous ne la modifiez pas dans la boucle?
  • Voici une approche de débogage: essayez de supprimer les lignes 157- 174 et réexécutez le script. Si vous obtenez toujours lerreur (probablement signalée comme étant à la ligne 157 ou 158), alors vous savez que le problème nest pas aux lignes 157-174, et vous devez regarder plus en arrière (donc, répétez le processus jusquà ce que lerreur disparaisse). … (Suite)
  • (suite)… Une fois lerreur disparue, remettez les dernières lignes que vous avez supprimées et commencez à les tailler. Par exemple, si la suppression des lignes 157-174 fait disparaître lerreur, replacez-les, puis supprimez les lignes 159-160, 163-168 et 171-172. Essayez de remplacer `grep …` par une liste de valeurs. En dautres termes, utilisez le processus délimination.
  • Remarques sur quelques-uns des commentaires de Scott ': (annonce 2) si vous êtes sûr de ce que vous faites alors (dans le code publié) seulement "$1" doit être cité, (annonce 4) il voulait probablement dire IFS (et non FS)?

Réponse

Le diagnostic  » fin de fichier inattendu «  indique que vous avez une construction syntaxique douverture sans correspondance ou sans terminaison (if w / o fi, do sans done, ouvrants entre crochets sans le fermant associé, guillemets ouvrants mais non terminés, etc.). Le numéro de ligne pointant vers la fin du script nest pas utile dans ce cas, au-delà de dire dinspecter vos constructions syntaxiques; lerreur peut se trouver nimporte où dans votre code. Vous devez vérifier cela.

Commentaires

  • Merci pour la réponse. Jai trouvé lerreur et je lai corrigée!
  • – lerreur peut être nimporte où dans votre code. Compte créé juste pour voter pour ce conseil.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *