1

Я использую Notepad++ и набираю:

    read s
    echo "$s"

Выход:

<code> ': недопустимый идентификатор </code>

И тогда я пытаюсь поставить точку с запятой:

read s;
echo "$s"

и вывод:

Я сохраняю файл как q.sh и запускаю с cygwin, но все равно не могу использовать оператор read поэтому я запутался. Я пробовал и другие редакторы, такие как vi но результат такой же.

Что случилось? Как заставить это работать?

1 ответ1

1

Текстовый файл, который составляет сценарий оболочки, был написан на Notepad++. Этот редактор по умолчанию сохраняет файлы как текстовые файлы DOS, которые, с точки зрения Unix, имеют избыточный возврат каретки (\r) в конце каждой строки. Это смущает sh .

Чтобы удалить это:

$ tr -d '\r' <q.sh >q-new.sh
$ mv q-new.sh q.sh

Скрипту не хватает #! -line (как указано в комментариях), но пока вы запускаете его с явным интерпретатором (sh q.sh), в этом нет необходимости.

Добавление строки

#!/bin/sh

будет (после chmod +x q.sh) запускать его как ./q.sh так же, как запускать его с sh q.sh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .