Pri spustení shell skriptu sa vráti nasledujúca chyba:
-bash: ./log_job.sh: /bin/bash^M: zlý interpretátor: Žiadny takýto súbor ani adresár Chyba spôsobuje:
.sh skript je napísaný v systéme Windows, takže môžu byť neviditeľné znaky, z vyššie uvedeného chybového promptu je veľmi pravdepodobné, že súbor skriptu je vo formáte DOS, teda koniec každého riadku je označený ako \r\n a jeho ASCII kód je 0x0D, 0x0A.
Chyba, ktorá sa zobrazuje pri spustení shell skriptu, je hlavne spôsobená tým, že shell skript súbor je vo formáte DOS, t. j. koniec každého riadku je označený ako \r\n a koniec súboru vo formáte UNIX je označený ako \n.
Špeciálna poznámka: ^M nie je ^ a písmeno M vytvorené posunom klávesu + 6, je to znak, jeho ASCII je 0x0D, spôsob, ako ho vygenerovať, je najprv stlačiť CTRL+V a potom Enter (alebo CTRL+M)
riešenie
Existuje niekoľko spôsobov, ako skontrolovať, či je súbor skriptu vo formáte DOS alebo UNIX.
(1) Skontrolujte formát skriptu: cat -A názov súboru Z výsledkov zobrazenia možno posúdiť, že riadok súboru končiaci vo formáte dos je ^M$ a riadok končiaci v unixovom formáte je $.
(2) Upraviť formát skriptu: názov súboru vi, aby sa súbor otvoril a vykonal:set ff=UnixNastavte súbor na unixový režim a spustite ho:wq, uložené vo formáte UNIX.
(3) Skontrolujte formát skriptu: cat -A názov súboru Z výsledku zobrazenia môžete posúdiť, že riadok súboru končiaci vo formáte dos je ^M$ a riadok končiaci v unixovom formáte je $.
|