Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 12633|Respuesta: 0

[Linux] /bin/bash^M: bad interpreter: No such file or directory

[Copiar enlace]
Publicado en 13/6/2020 22:40:35 | | | |
Al ejecutar un script de shell, se devuelve el siguiente error:

-bash: ./log_job.sh: /bin/bash^M: intérprete malo: No existe dicho archivo o directorio
Causas del error:

.sh script está escrito en el sistema Windows, por lo que puede haber caracteres invisibles; según el prompt de error anterior, es muy probable que el archivo de script esté en formato DOS, es decir, el final de cada línea se identifique por \r\n, y su código ASCII es 0x0D, 0x0A respectivamente.

El error que se muestra al ejecutar un script de shell se debe principalmente a que el archivo de script de shell está en formato DOS, es decir, el final de cada línea se identifica por \r\n, y el final del archivo en formato UNIX se identifica por \n.

Nota especial: ^M no es el ^ y la letra M producidos por el desplazamiento de tecla + 6, es un carácter, su ASCII es 0x0D, la forma de generarlo es pulsar primero CTRL+V y luego enter (o CTRL+M)


solución

Hay varias formas de comprobar si el archivo de script está en formato DOS o UNIX.

(1) Comprobar el formato del script: cat -A nombre de archivo A A partir de los resultados de visualización, se puede juzgar que la línea de archivo que termina en formato dos es ^M$, y la línea de archivo que termina en formato unix es $.



(2) Modificar el formato del script: nombre de archivo vi para abrir el archivo y ejecutarlo:set ff=unixConfigura el archivo en unix y ejecuta:wq, guardado en formato UNIX.

  (3) Comprueba el formato del script: cat -A nombre de archivo A A partir del resultado de visualización, puedes juzgar que la línea de archivo que termina en formato dos es ^M$, y la línea de archivo que termina en formato unix es $.







Anterior:Tutorial SSIS 1 Introducción a los Servicios de Integración de SQL Server
Próximo:División y eliminación de troncos de Nginx
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com