Når et shell-script udføres, returneres følgende fejl:
-bash: ./log_job.sh: /bin/bash^M: dårlig tolk: Ingen sådan fil eller mappe Fejlårsager:
.sh scriptet er skrevet under Windows-systemet, så der kan være usynlige tegn, og ud fra ovenstående fejlprompt er det meget sandsynligt, at scriptfilen er i DOS-format, det vil sige, at slutningen af hver linje identificeres med \r\n, og dens ASCII-kode er 0x0D, 0x0A henholdsvis.
Fejlen, der vises, når et shell-script udføres, skyldes hovedsageligt, at shell-scriptfilen er i DOS-format, dvs. slutningen af hver linje identificeres med \r\n, og slutningen af UNIX-formatfilen identificeres med \n.
Særlig note: ^M er ikke ^ og bogstavet M, som produceres af tastskiftet + 6, det er et tegn, dets ASCII er 0x0D, måden at generere det på er ved først at trykke CTRL+V og derefter indtaste (eller CTRL+M)
opløsning
Der er flere måder at kontrollere, om scriptfilen er i DOS- eller UNIX-format.
(1) Tjek scriptets format: cat -A filnavn Ud fra visningsresultaterne kan det vurderes, at fillinjen, der ender i dos-format, er ^M$, og fillinjen, der ender i unix-format, er $.
(2) Ændr formatet på scriptet: vi-filnavn for at åbne filen og udføre filen:sæt ff=UnixSæt filen til Unix og eksekver filen:wq, gemt i UNIX-format.
(3) Tjek formatet på scriptet: cat -Et filnavn Ud fra visningsresultatet kan du vurdere, at fillinjen, der ender i dos-format, er ^M$, og fillinjen, der ender i unix-format, er $.
|