Quand un script shell comporte des \r\n de fin de lignes au lieux de \n
par
, 23/05/2016 à 23h44 (827 Affichages)
Grr! Mon script que j'ai éditer sur mon OS Microsoft avec le super notepad ne fonctionne plus sur Linux!
Soit la tentative d’exécution du script Shell suivant, voici ce que répond l’interpréteur BASH par exemple (toutes ressemblance avec un exemple concret n'est que fortuite!) :
Hum! ca sent le script qui possède des caractères de fin de lignes non reconnus par Linux et éditer sous Windows!!.herve@pc26Herve:~/univ/shell$ sudo bash script.sh
[sudo] password for herve:
***** MENU *****
1 ) Affichage des informations à l’écran
2 ) Affichage des informations dans un fichier
Votre choix ?
script.sh: line 7: $’\r’: command not found
‘: not a valid identifier 8: read: `choix
script.sh: line 9: $’\r’: command not found
script.sh: line 11: $’\r’: command not found
script.sh: line 12: syntax error near unexpected token `newline’
‘script.sh: line 12: `case $choix in
A quoi voit t’on cela => script.sh: line 7: $’\r’: command not found <= a cela…
-> On peut diagnostiquer cela grâce à la commande « file », comme ceci :
Pour convertir ce script et retirer les \r\n de fin et ne conserver que les \n, deux solutions :herve@pc26Herve:~/univ/shell$ file script.sh
script.sh: Bourne-Again shell script, UTF-8 Unicode text executable, with CRLF line terminators
Si l’on possède la commande « dos2unix », il suffit dans ce cas de lancer cette commande comme ceci : dos2unix script.sh
Sinon utilisez la commande « tr », comme ceci :
Il ne reste plus qu’a contrôler le résultat …
Code : Sélectionner tout - Visualiser dans une fenêtre à part tr -d ‘\r’ < script.sh > scriptnew.sh
Ouf, enfin on peut éditer du script Shell avec notepad Microsoft pour l’exécuter sous CygWin durant les TP sans s'installer un Linux ou une super Machine Virtuelle sous VirtualBox!herve@pc26Herve:~/univ/shell$file scriptnew.sh
scriptnew.sh: Bourne-Again shell script, UTF-8 Unicode text executable
FIN