Ao executar um script shell, o seguinte erro é retornado:
-bash: ./log_job.sh: /bin/bash^M: interpretador ruim: Não existe esse tipo de arquivo ou diretório Causas do erro:
.sh script é escrito no sistema Windows, então pode haver caracteres invisíveis; pelo prompt de erro acima, é muito provável que o arquivo de script esteja no formato DOS, ou seja, o final de cada linha seja identificado por \r\n, e seu código ASCII seja 0x0D, 0x0A respectivamente.
O erro exibido ao executar um script shell se deve principalmente ao fato de que o arquivo de script shell está no formato DOS, ou seja, o final de cada linha é identificado por \r\n, e o final do arquivo em formato UNIX é identificado por \n.
Nota especial: ^M não é o ^ e a letra M produzidos pelo shift de tecla + 6, é um caractere, seu ASCII é 0x0D, a forma de gerá-lo é pressionar primeiro CTRL+V e depois enter (ou CTRL+M)
solução
Existem várias maneiras de verificar se o arquivo de script está em formato DOS ou UNIX.
(1) Verifique o formato do script: cat -A nome do arquivo Pelos resultados de exibição, pode-se julgar que a linha de arquivo terminando no formato dos é ^M$, e a linha de arquivo terminando no formato unix é $.
(2) Modificar o formato do script: vi filename para abrir o arquivo e executar:set ff=unixDefina o arquivo para unix e execute:wq, salvo no formato UNIX.
(3) Verifique o formato do script: cat -A nome do arquivo Pelo resultado de exibição, você pode julgar que a linha de arquivo terminando no formato dos é ^M$, e a linha do arquivo terminando no formato unix é $.
|