Această întrebare are deja răspunsuri aici :
Comentarii
- În legătură: linia shebang nu funcționează cu cr-lf
- … deoarece utilizați
vi
, puteți schimba între sfârșiturile de linie folosind:set ff=unix
și:set ff=dos
- există un o mulțime de întrebări despre acel CR dacă google pentru
^M
Ce este^M
și cum scap de el? , Scriptul Unix adaugă ^ M la sfârșitul fiecărei linii , -bash: ./my_script: / bin / bash ^ M : interpret necorespunzător: Nu există un astfel de fișier sau director … - Eu ' votez această opțiune pentru că ' este un duplicat așa cum arată @phuciv.
- În ceea ce privește modificarea recentă a acestei vechi întrebări: a doua întrebare marcată ca duplicat conține răspunsuri care nu folosesc
dos2unix
.
Răspuns
Se pare că ai terminări de linie în stil Windows (CRLF, ^ M ^ J ) în loc de terminații de linie în stil unix (LF, ^ J). Încercați dos2unix
dos2unix delete_7gg.sh
apoi rulați ca de obicei
De la om:
dos2unix – Convertor format format fișier text DOS / MAC la UNIX
tr -d '\r' < input > output
.