Esta pergunta já tem respostas aqui :
Comentários
- Relacionado: linha shebang não funciona com cr-lf
- … já que você está usando
vi
, você pode alternar entre os finais de linha usando:set ff=unix
e:set ff=dos
- há um muitas perguntas sobre essa resposta automática se você pesquisar
^M
O que é^M
e como posso me livrar dele? , O script Unix anexa ^ M no final de cada linha , -bash: ./my_script: / bin / bash ^ M : mau intérprete: arquivo ou diretório inexistente … - Eu ' estou votando contra porque ' sa duplicado como mostra @phuciv.
- Em relação à sua recente edição desta pergunta antiga: a segunda pergunta marcada como uma duplicata contém respostas que não usam
dos2unix
.
Resposta
Você parece ter terminações de linha no estilo do Windows (CRLF, ^ M ^ J ) em vez de terminações de linha no estilo Unix (LF, ^ J). Tente dos2unix
dos2unix delete_7gg.sh
e execute normalmente
De man:
dos2unix – conversor de formato de arquivo de texto DOS / MAC para UNIX
tr -d '\r' < input > output
.