Při spuštění shell skriptu se vrátí následující chyba:
-bash: ./log_job.sh: /bin/bash^M: špatný interpret: Žádný takový soubor ani adresář Chyba způsobuje:
.sh skript je napsán v systému Windows, takže mohou být neviditelné znaky, z výše uvedené chybové výzvy je velmi pravděpodobné, že skript je ve formátu DOS, tedy konec každého řádku je označen jako \r\n a jeho ASCII kód je 0x0D, 0x0A respektive.
Chyba, která se zobrazí při spuštění shell skriptu, je způsobena především tím, že shell skript soubor je ve formátu DOS, tj. konec každého řádku je označen jako \r\n a konec souboru ve formátu UNIX je označen jako \n.
Speciální poznámka: ^M není ^ a písmeno M vytvořené posunem klávesy + 6, je to znak, jeho ASCII je 0x0D, způsob, jak ho vygenerovat, je nejprve stisknout CTRL+V a poté zadat (nebo CTRL+M)
řešení
Existuje několik způsobů, jak zkontrolovat, zda je skriptový soubor ve formátu DOS nebo UNIX.
(1) Zkontrolujte formát skriptu: cat -A název souboru Z výsledků zobrazení lze usoudit, že řádek souboru končící ve formátu dos je ^M$ a řádek končící v unixovém formátu je $.
(2) Upravit formát skriptu: vi název souboru pro otevření souboru a spuštění souboru:set ff=unixNastavte soubor na unixový režim a spustit ho:wq, uložené ve formátu UNIX.
(3) Zkontrolujte formát skriptu: cat -A název souboru Z výsledku zobrazení můžete posoudit, že řádek souboru končící ve formátu dos je ^M$ a řádek končící v unixovém formátu je $.
|