Podczas wykonywania skryptu powłoki zwracany jest następujący błąd:
-bash: ./log_job.sh: /bin/bash^M: zły interpreter: Brak takiego pliku ani katalogu Błąd powoduje:
.sh skrypt jest napisany w systemie Windows, więc mogą występować znaki niewidoczne, z powyższego promptu błędu bardzo prawdopodobne jest, że plik skryptu jest w formacie DOS, czyli koniec każdej linii jest oznaczony jako \r\n, a jego kod ASCII to 0x0D, 0x0A odpowiednio.
Błąd wyświetlany podczas uruchamiania skryptu powłoki wynika głównie z faktu, że plik skryptu powłoki jest w formacie DOS, tzn. koniec każdej linii jest oznaczony jako \r\n, a koniec pliku w formacie UNIX jako \n.
Uwaga specjalna: ^M nie jest ^ i literą M powstałą przez przesunięcie + 6, jest to znak, jego ASCII to 0x0D, sposób na jego wygenerowanie to najpierw naciśnięcie CTRL+V, a następnie Enter (lub CTRL+M)
rozwiązanie
Istnieje kilka sposobów na sprawdzenie, czy plik skryptu jest w formacie DOS czy UNIX.
(1) Sprawdź format skryptu: cat -A nazwa pliku Na podstawie wyników wyświetlania można stwierdzić, że linia pliku kończąca się formatem dos to ^M$, a linia końcowa w formacie unix to $.
(2) Zmodyfikuj format skryptu: nazwa pliku vi, aby otworzyć plik i wykonać go:set ff=UnixUstaw plik na Unix i wykonaj:wq, zapisane w formacie UNIX.
(3) Sprawdź format skryptu: cat -A nazwa pliku Na podstawie wyniku wyświetlania możesz ocenić, że linia pliku kończąca się formatem dos to ^M$, a linia pliku kończąca się w formacie uniksowym to $.
|