Плохой интерпретатор сценария оболочки? Работы иногда

У меня есть странная ситуация где некоторые мои сценарии оболочки то использование #!/bin/sh как хижина иногда работают - другие времена, они приводят к следующему сообщению:

удар:./newshit.sh:/bin/sh^M: плохой интерпретатор: Никакой такой файл или каталог

Действительно ли там что-то просто, который я пропускаю?

1
задан 20.05.2011, 12:34

0 ответов

Это ^M является мертвой дешевой распродажей - похоже, что сценарий имеет окончания строки Mac (Ctrl-M) вместо окончаний строки Unix (Ctrl-J).

Это не появится как литеральный ^M - на самом деле в зависимости от Вашего текстового редактора, который это нельзя было бы показать вообще.

Вы не говорите, какую операционную систему Вы имеете, таким образом, я не уверен, какие инструменты Вы имеете в своей системе, но могли Вы пытаться получить символ (не шестнадцатеричное число) дамп с:

od -tc newshit.sh

... и скажите нам, сопровождается ли/bin/sh \r, \n или \r\n?

Я ожидаю, что Вы будете видеть что-то как:

0000000   #   !   /   b   i   n   /   s   h  \r

Или если Вы работаете:

cat -e newshit.sh

... это отобразит символ возврата каретки, если это будет там.

2
ответ дан 12.12.2019, 09:13

dos2unix newshit.sh зафиксирует его.

Править: С другой стороны, если по некоторым причинам Вы не сможете найти dos2unix, то этот простой сценарий сделает это:

tr -d '\r' < newshit.sh > newshit-fixed.sh 
2
ответ дан 12.12.2019, 09:13

Теги

Похожие вопросы