“/bin/bash^M: mauvais interpréteur: Aucun fichier ou répertoire” erreur lors de l'exécution d'un script bash à partir d'une tâche cron
Restore_DB.sh :-
#!/bin/bash
mysql -u user -ppassword DB_name < /home/A/B/SQL_File.sql
J'ai utilisé le code ci-dessus pour restaurer une base de données MySQL à partir d'une tâche cron mais je le soufflet d'erreur
/usr/local/cpanel/bin/jailshell: /home/A/B/Restore_DB.sh: /bin/bash^M: bad interpreter: No such file or directory
C'est la tâche cron de commande que j'ai utilisé:-
/home/A/B/Restore_DB.sh
- double possible de ./configurer : /bin/sh^M : mauvais interpréteur
- Double Possible de script Bash: mauvais interpréteur
Vous devez vous connecter pour publier un commentaire.
sa ressemble à un problème avec les différents extrémité de la ligne de codages sur unixoid et MS-Windows, comme les systèmes.
Utiliser les caractères de fin de ligne
\n
qui est originaire de unixoid systèmes MS-Windows style. Ce que l'on possède un caractère supplémentaire qui est généralement affiché aimez ce que vous voyez dans le message d'erreur (^M
).Vous pouvez regarder de plus près à la ligne en question à l'aide d'un hexeditor. Cela vous permet de voir exactement ce que les caractères non-imprimables sont utilisés à l'intérieur d'une chaîne.
Return
qui produit un saut de ligne. Vous avez juste à vous assurer que vous avez dit à l'éditeur pour une utilisation normale unixoid les sauts de ligne (unix). Ou d'utiliser certains de décapage utilitaire comme quoi @stefreak suggéré. Si cela sonne comme des frais généraux pour moi, compte tenu que vous voulez juste de taper un saut de ligne 🙂 Ou, comme mentionné ci-dessus, l'utilisation d'un hexeditor. Elle permet à la fois de vérifier et pour changer la chaîne. Vous pouvez facilement repérer et de supprimer le caractère fautif. Il est affiché comme ceci: 0x10 0x13. Ici, 0x10 est le\n
et 0x13 est le\r
qui vous ne voulez pas que là.Essayer si dos2unix peut réparer votre fichier:
Si dos2unix n'existe pas encore, vous pouvez l'installer avec la distribution de votre gestionnaire de packages.
Le problème, c'est le retour à la ligne de codage, Windows/DOS code pour les retours à la ligne différemment Unix.
\n
(seul caractère de saut de ligne)\r\n
(2 caractères de retour chariot et saut de ligne)Voir https://en.wikipedia.org/wiki/Newline#Representations
Je viens de tomber sur ce sur OS X et remarqué dos2unix est disponible en tant que de brasser de la formule:
yum install dos2unix
fonctionne comme un charme !!!!
yum
est le bon outil de gestion de paquets pour le demandeur?), un peu plus d'explication (de la cause et corriger) serait utile.