Questa domanda ha già una risposta qui :
Commenti
- Correlati: la riga di shebang non funziona con cr-lf
- … poiché stai utilizzando
vi
, puoi cambiare tra le terminazioni di riga utilizzando:set ff=unix
e:set ff=dos
- ci sono un molte domande su quella risposta predefinita se cerchi
^M
Che cosè^M
e come posso eliminarlo? , Lo script Unix aggiunge ^ M alla fine di ogni riga , -bash: ./my_script: / bin / bash ^ M : cattivo interprete: nessun file o directory di questo tipo … - ' voto in difetto perché ' è un duplicato come mostra @phuciv.
- In merito alla tua recente modifica a questa vecchia domanda: la seconda domanda contrassegnata come duplicata contiene risposte che non utilizzano
dos2unix
.
Risposta
Sembra che tu abbia terminazioni di riga in stile Windows (CRLF, ^ M ^ J ) invece delle terminazioni di riga in stile unix (LF, ^ J). Prova dos2unix
dos2unix delete_7gg.sh
quindi esegui come al solito
Da man:
dos2unix – Convertitore di formati di file di testo da DOS / MAC a UNIX
tr -d '\r' < input > output
.