Når et shell-skript kjøres, returneres følgende feil:
-bash: ./log_job.sh: /bin/bash^M: dårlig tolk: Ingen slik fil eller katalog Feilårsaker:
.sh skriptet er skrevet under Windows-systemet, så det kan være usynlige tegn, ut fra feilmeldingen ovenfor, er det svært sannsynlig at skriptfilen er i DOS-format, det vil si at slutten av hver linje identifiseres med \r\n, og ASCII-koden er 0x0D, 0x0A henholdsvis.
Feilen som vises når et shell-skript kjøres, skyldes hovedsakelig at shell-skriptfilen er i DOS-format, det vil si at slutten av hver linje identifiseres med \r\n, og slutten av UNIX-formatfilen identifiseres med \n.
Spesiell merknad: ^M er ikke ^ og bokstaven M som produseres av tasteshift + 6, det er et tegn, ASCII er 0x0D, måten å generere det på er å trykke CTRL+V først, og deretter enter (eller CTRL+M)
løsning
Det finnes flere måter å sjekke om skriptfilen er i DOS- eller UNIX-format.
(1) Sjekk formatet på skriptet: cat -A filnavn Ut fra visningsresultatene kan det vurderes at fillinjen som ender i dos-format er ^M$, og fillinjen som ender i unix-format er $.
(2) Endre formatet på skriptet: vi filnavn for å åpne filen og kjøre:sett ff=UnixSett filen til Unix og kjør:wq, lagret i UNIX-format.
(3) Sjekk formatet på skriptet: cat -Et filnavn Ut fra visningsresultatet kan du vurdere at fillinjen som ender i dos-format er ^M$, og fillinjen som ender i unix-format er $.
|