Під час виконання shell-скрипту повертається така помилка:
-bash: ./log_job.sh: /bin/bash^M: поганий інтерпретатор: Такого файлу чи каталогу немає Причини помилок:
.sh скрипт написаний під системою Windows, тому можуть бути невидимі символи; з наведеного вище запиту помилки дуже ймовірно, що файл скрипту у форматі DOS, тобто кінець кожного рядка ідентифікується за \r\n, а його ASCII-код — 0x0D, 0x0A відповідно.
Помилка, яка відображається під час виконання shell-скрипту, здебільшого пов'язана з тим, що файл shell-скрипту знаходиться у форматі DOS, тобто кінець кожного рядка ідентифікується за \r\n, а кінець UNIX-файлу — за \n.
Особлива примітка: ^M — це не ^ і літера M, які утворюється клавішою shift + 6, це символ, його ASCII — 0x0D, спосіб його генерації — спочатку натиснути CTRL+V, а потім enter (або CTRL+M)
рішення
Існує кілька способів перевірити, чи файл скрипту у форматі DOS або UNIX.
(1) Перевірте формат скрипту: cat -A ім'я файлу За результатами відображення можна визначити, що рядок файлу, що закінчується у форматі dos, дорівнює ^M$, а рядок файлу, що закінчується у форматі unix, — $.
(2) Змінити формат скрипту: vi ім'я файлу, щоб відкрити файл і виконати:set ff=unixВстановіть файл у Unix і запустіть:wq, збережено у форматі UNIX.
(3) Перевірте формат скрипту: cat -A ім'я файлу За результатом відображення можна визначити, що рядок файлу, що закінчується у форматі dos, дорівнює ^M$, а рядок файлу, що закінчується у форматі unix, — $.
|