Pri izvajanju shell skripte se vrne naslednja napaka:
-bash: ./log_job.sh: /bin/bash^M: slab interpretator: Ni takšne datoteke ali imenika Napaka povzroča:
.sh je skripta napisana v sistemu Windows, zato so lahko nevidni znaki; iz zgornjega navodila za napako je zelo verjetno, da je datoteka skripte v DOS formatu, torej je konec vsake vrstice označen z \r\n, njena ASCII koda pa 0x0D 0x0A.
Napaka, ki se prikaže pri izvajanju shell skripte, je predvsem posledica dejstva, da je shell script datoteka v DOS formatu, tj. konec vsake vrstice je označen z \r\n, konec UNIX datoteke pa z \n.
Posebna opomba: ^M ni ^ in črka M, ki ju ustvari premik tipke + 6, je znak, njegov ASCII je 0x0D, način za generiranje je, da najprej pritisnete CTRL+V, nato vnesete (ali CTRL+M)
rešitev
Obstaja več načinov za preverjanje, ali je skriptna datoteka v DOS ali UNIX formatu.
(1) Preverite format skripte: cat -A ime datoteke Iz rezultatov prikaza lahko sklepamo, da je vrstica datoteke, ki se konča v dos formatu, ^M$, in vrstica datoteke, ki se konča v unix formatu, $.
(2) Spremenite format datoteke skripte: vi, da se datoteka odpre in izvede:set ff=unixNastavi datoteko na unix in zaženi:wq, shranjeno v UNIX formatu.
(3) Preverite format skripte: cat -A ime datoteke Iz rezultata prikaza lahko presodite, da je vrstica datoteke, ki se konča v dos formatu, ^M$, in vrstica datoteke, ki se konča v unix formatu, $.
|