Lors de l’exécution d’un script shell, l’erreur suivante est renvoyée :
-bash : ./log_job.sh : /bin/bash^M : mauvais interpréteur : Aucun fichier ou répertoire de ce type Causes d’erreur :
.sh script est écrit sous Windows, donc il peut y avoir des caractères invisibles ; d’après l’invite d’erreur ci-dessus, il est très probable que le fichier script soit au format DOS, c’est-à-dire que la fin de chaque ligne est identifiée par \r\n, et que son code ASCII est 0x0D, 0x0A respectivement.
L’erreur affichée lors de l’exécution d’un script shell est principalement due au fait que le fichier de script shell est au format DOS, c’est-à-dire que la fin de chaque ligne est identifiée par \r\n, et la fin du fichier au format UNIX par \n.
Note spéciale : ^M n’est pas le ^ et la lettre M produits par le décalage de touche + 6, c’est un caractère, son ASCII est 0x0D, la façon de le générer est d’appuyer d’abord sur CTRL+V, puis sur Entrée (ou CTRL+M)
solution
Il existe plusieurs façons de vérifier si le fichier de script est au format DOS ou UNIX.
(1) Vérifier le format du script : cat -A nom de fichier D’après les résultats affichés, on peut juger que la ligne de fichier se terminant au format dos est ^M$, et la ligne de fichier se terminant au format Unix est $.
(2) Modifier le format du script : vi filename pour ouvrir le fichier et l’exécuter:set ff=unixRéglez le fichier sur unix et exécutez:wq, enregistré au format UNIX.
(3) Vérifier le format du script : cat -A fichier D’après le résultat affiché, vous pouvez juger que la ligne de fichier se terminant au format dos est ^M$, et la ligne de fichier se terminant au format unix est $.
|