|
При выполнении сценария оболочки возвращается следующая ошибка:
-bash: . /log_job.sh: /bin/bash^M: плохой интерпретатор: нет такого файла или каталога Причина ошибки:
Скрипт .sh написан в системе windows, поэтому в нем могут присутствовать невидимые символы. Судя по приведенному выше сообщению об ошибке, вполне вероятно, что файл скрипта имеет формат DOS, т.е. каждая строка идентифицируется \r\n в конце строки, а ее ASCII-код равен 0x0D, 0x0A соответственно.
Основная причина возникновения этой ошибки при выполнении сценариев оболочки заключается в том, что файлы сценариев оболочки имеют формат DOS, то есть конец каждой строки идентифицируется \r\n, в то время как конец строки в формате unix идентифицируется \n.
Особое примечание: ^M - это не клавиша shift + 6, генерирующая ^ и букву M, это символ, его ASCII - 0x0D, способ его генерации - сначала нажать CTRL + V, а затем enter (или CTRL + M).
Решение
Есть несколько способов проверить, является ли файл скрипта в формате dos или в формате unix.
(1) Проверьте формат скрипта: cat -A filename По результату отображения можно судить, что конец строки - это ^M$ в формате dos и $ в формате unix.
(2) Измените формат скрипта: vi filename откроет файл, выполните :set ff=unix , чтобы установить файл в unix, а затем выполните :wq, чтобы сохранить его в формате unix.
(3) Просмотр формата скрипта: cat -A filename По результату отображения можно судить, что конец строки файла в формате dos - ^M$, а конец строки файла в формате unix - $.
|
Предыдущий: Самоучитель SSIS (I) SQL Server Integration Services Начало работы ВведениеСледующая: Разделение и удаление логов Nginx
|