Shell szkript futtatásakor a következő hiba jelenik meg:
-bash: ./log_job.sh: /bin/bash^M: rossz értelmező: Nincs ilyen fájl vagy könyvtár A hiba okai a következők:
.sh szkript Windows rendszerben van írva, így lehetnek láthatatlan karakterek; a fenti hibapromptból nagyon valószínű, hogy a szkriptfájl DOS formátumban van, vagyis minden sor végét \r\n jelöli, az ASCII kódja pedig 0x0D, illetve 0x0A.
A shell szkript futtatásakor megjelenő hiba főként abból fakad, hogy a shell szkript fájl DOS formátumban van, vagyis minden sor végét \r\n jelöli, a UNIX formátumú fájl végét pedig \n jelöli.
Külön megjegyzés: ^M nem az a ^ és M betű, amit a billentyű + 6 vált ki, hanem egy karakter, az ASCII-je 0x0D, a generálásának módja úgy, hogy először megnyomod a CTRL+V-t, majd belépünk (vagy CTRL+M).
megoldás
Többféle módja van annak ellenőrzésére, hogy a scriptfájl DOS vagy UNIX formátumban van-e.
(1) Ellenőrizd a szkript formátumát: cat -A fájlnév A megjelenítési eredmények alapján megállapítható, hogy a dos formátumban végződő fájlsor ^M$, a unix formátumban végződő fájlsor pedig $.
(2) Módosítsuk a szkript: vi fájlnév formátumát, hogy megnyissa a fájlt és végrehajtsd:set ff=unixÁllítsd be a fájlt unix-ra, és hajtsd végre:wq, UNIX formátumban mentve.
(3) Ellenőrizd a szkript formátumát: cat -A fájlnév A megjelenítési eredményből megállapíthatod, hogy a dos formátumban végződő fájlsor ^M$, és a unix formátumban végződő fájlsor $.
|