При изпълнение на shell скрипт се връща следната грешка:
-bash: ./log_job.sh: /bin/bash^M: лош интерпретатор: Няма такъв файл или директория Причините за грешки:
.sh скрипт е написан под Windows системата, така че може да има невидими символи; от горния подсказка за грешка е много вероятно скриптният файл да е в DOS формат, т.е. краят на всеки ред е идентифициран с \r\n, а ASCII кодът му е съответно 0x0D, 0x0A.
Грешката, която се показва при изпълнение на shell скрипт, се дължи основно на факта, че shell script файлът е в 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 формат, е $.
|