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 $.
|