При выполнении скрипта 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 — $.
|