Vykdant apvalkalo scenarijų, pateikiama ši klaida:
-bash: ./log_job.sh: /bin/bash^M: blogas interpretatorius: Nėra tokio failo ar katalogo Klaidos priežastys:
.sh scenarijus parašytas "Windows" sistemoje, todėl gali būti nematomų simbolių, iš aukščiau pateikto klaidos raginimo labai tikėtina, kad scenarijaus failas yra DOS formatu, tai yra, kiekvienos eilutės pabaiga identifikuojama \r\n, o jo ASCII kodas yra atitinkamai 0x0D, 0x0A.
Klaida, kuri rodoma vykdant apvalkalo scenarijų, daugiausia atsiranda dėl to, kad apvalkalo scenarijaus failas yra DOS formatu, t.y. kiekvienos eilutės pabaiga identifikuojama \r\n, o UNIX formato failo pabaiga - \n.
Speciali pastaba: ^M nėra ^ ir raidė M, kurią sukuria klavišas shift + 6, tai yra simbolis, jo ASCII yra 0x0D, būdas jį generuoti yra pirmiausia paspausti CTRL+V, o tada įvesti (arba CTRL+M)
sprendimas
Yra keli būdai, kaip patikrinti, ar scenarijaus failas yra DOS ar UNIX formato.
(1) Patikrinkite scenarijaus formatą: cat -A failo pavadinimas Iš rodomų rezultatų galima spręsti, kad failo eilutė, kuri baigiasi dos formatu, yra ^M$, o failo eilutė, kuri baigiasi unix formatu, yra $.
(2) Pakeiskite scenarijaus formatą: vi failo pavadinimas atidaryti failą ir vykdyti:set ff=unixNustatykite failą į unix ir vykdykite:wq, įrašytas UNIX formatu.
(3) Patikrinkite scenarijaus formatą: cat -A failo pavadinimas Iš rodomo rezultato galite spręsti, kad failo eilutė, kuri baigiasi dos formatu, yra ^M$, o failo eilutė, kuri baigiasi unix formatu, yra $.
|