Când se execută un script shell, se returnează următoarea eroare:
-bash: ./log_job.sh: /bin/bash^M: interpret prost: Nu există astfel de fișiere sau director Cauzele erorii:
.sh scriptul este scris în sistemul Windows, deci pot exista caractere invizibile; din întrebarea de eroare de mai sus, este foarte probabil ca fișierul script să fie în format DOS, adică sfârșitul fiecărei linii este identificat prin \r\n, iar codul său ASCII este 0x0D, respectiv 0x0A.
Eroarea afișată la executarea unui script shell se datorează în principal faptului că fișierul de script shell este în format DOS, adică sfârșitul fiecărei linii este identificat prin \r\n, iar sfârșitul fișierului în format UNIX este identificat prin \n.
Notă specială: ^M nu este ^ și litera M produse de deplasarea tastei + 6, este un caracter, ASCII-ul său este 0x0D, modul de generare este să apeși mai întâi CTRL+V, apoi enter (sau CTRL+M)
soluție
Există mai multe moduri de a verifica dacă fișierul de script este în format DOS sau UNIX.
(1) Verifică formatul scriptului: cat -Nume de fișier A Din rezultatele afișării, se poate judeca că linia de fișier care se termină în format dos este ^M$, iar linia de fișier care se termină în format unix este $.
(2) Modifică formatul scriptului: vi filename pentru a deschide fișierul și a executa:set ff=unixSetează fișierul pe unix și execută:wq, salvat în format UNIX.
(3) Verifică formatul scriptului: cat -A nume fișier Din rezultatul afișării, poți judeca că linia de fișier care se termină în format dos este ^M$, iar linia de fișier care se termină în format unix este $.
|