🐧 Corriger l’erreur « Syntax error: end of file unexpected (expecting ‘then’) » sous Linux
Si vous êtes tombé sur cet article, c’est probablement parce que vous avez rencontré l’erreur suivante dans un script shell :
Syntax error: end of file unexpected (expecting "then")
📌 Pourquoi cette erreur apparaît ?
Cette erreur survient souvent lorsque vous exécutez un script bash créé ou modifié sous Windows (par exemple avec Notepad++).
Windows et Linux n’utilisent pas les mêmes fins de ligne : Windows enregistre les fichiers avec CRLF
alors que Linux attend uniquement LF
.
Résultat : le shell ne comprend pas la structure du script et affiche cette erreur.
⚡ Exemple concret
Dans mon cas, le problème est apparu sur un script lancé via crontab.
Rien de grave… mais très pénible à déboguer sans connaître la cause.
✅ La solution : utiliser dos2unix
dos2unix est un utilitaire en ligne de commande qui permet de convertir les fins de ligne d’un fichier texte de format Windows vers format Unix/Linux.
Installation :
sudo apt install dos2unix
Conversion de votre script :
dos2unix monfichier.sh
Une fois la commande exécutée, le fichier est réenregistré avec les bonnes fins de ligne, et votre script peut enfin tourner correctement sans afficher l’erreur.
📖 Plus d’options avec dos2unix
L’outil propose plusieurs arguments pour traiter différents cas d’usage (conversion inverse, gestion d’encodage, etc.).
👉 Vous pouvez consulter la documentation complète ici :
Manpage officielle de dos2unix
🎯 Conclusion
Si vous tombez sur Syntax error: end of file unexpected (expecting "then")
, pensez d’abord à vérifier l’encodage et le format de vos fichiers.
Dans la majorité des cas, un simple dos2unix résout le problème immédiatement.