web-dev-qa-db-fra.com

EOF inattendu dans un script bash, pourquoi?

Je ne peux pas normalement exécuter les scripts sh. C'est confu. Je règle les permissions sur 777 et + x, donc ça devrait marcher avec la commande 'sh', bon ...

Mais cela fonctionne très étrange. Par exemple, ces scripts fonctionnent bien:

echo "hello"

il affiche "bonjour" sans erreur. Mais ce script:

#!/bin/bash
for i in `seq 1 5`; do 
    echo $i
done

... renvoie cette erreur:

Syntax error: end of file unexpected (expecting "done")

Y a-t-il quelque chose qui cloche dans cette boucle?

3
user568021

Le problème, c'est que vous avez probablement créé un Ctrl+CCtrl+V à partir d'un site Web, et le caractère de fin de ligne présentait un caractère étrange et non imprimable. (Vous pouvez le rendre visible en effectuant un dump au format hexadécimal du fichier.)

Veuillez ouvrir votre fichier dans un éditeur et retaper tout manuellement, ou au moins supprimer les derniers caractères eol, enregistrez votre travail et réessayez.

7
Frantique