15 octobre 2012

Erreurs d'un script Linux à cause d'un format [dos]

Sous Linux, à l'exécution, un de mes scripts a un comportement bizarre.
Il commence par deux lignes blanches, et si je tente une exécution avec trace j'obtiens ceci :

ksh -x ScriptBizarre.sh
+
: not found
+
: not found

...

Si je l'édite sous "vi" ("vim" sous Linux) ... rien de spécial.
Je finis par remarquer que "vim" m'indique à l'ouverture du fichier :

ScriptBizarre.sh 29L, 547C [dos]

Effectivement, j'avais édité ce script sur mon poste puis je l'avais transféré par FTP sur le serveur. Chaque ligne se termine donc par un "^M" (caractère de fin de ligne Windows) que "vim" masque en faisant une conversion automatique à l'affichage.Si je force l'affichage des caractères spéciaux avec la commande "cat" j'obtiens en effet :

cat -A ScriptBizarre.sh
^M$
^M$

...

Pour convertir le fichier du format DOS au format UNIX :
  • l'éditer et indiquez que vous souhaitez un format Unix en tapant :set fileformat=unix puis sauvegardez,
  • ou utilisez la commande dos2unix ScriptBizarre.sh

A lire ... http://vim.wikia.com/wiki/File_format

1 commentaire:

  1. Sous Linux, il y a le programme dos2unix pour faire la conversion des sauts de ligne.

    RépondreSupprimer