Что вызывает "синтаксическую ошибку возле неожиданной лексемы `do'" и как я могу ее исправить?

Вы можете просто заменить синтаксис {}, который вы пытаетесь использовать, на cat, поскольку вы пытаетесь читать из stdin:

git ls-remote $1 'refs/heads/*' \
  | rev \
  | cut -d'/' -f1 \
  | rev \
  | if [ -z $2 ]
      then
        cat
      else
        cat > $2
    fi

Обновить : подоболочка не нужна, спасибо @tripleee.

0
24.02.2016, 08:22
2 ответа

Как правило, когда я получаю ошибку такого типа (несоответствие if / else, do, while и т. Д.) И я не могу найти код нарушения, Я делаю резервную копию сценария и начинаю удалять фрагменты кода между любыми блоками, пока у меня не будет только скелет управляющих структур, который обычно помогает мне найти отсутствующее ключевое слово.

1
28.01.2020, 02:14

Missing Loop Conditional

Ваш синтаксис неверен. У вас могут быть и другие проблемы с кодом, но это сообщение, скорее всего, вызвано тем, что вы не можете использовать ключевое слово do как блок; вам необходимо иметь одно из условий цикла.

В настоящее время у вас есть:

        *)
            do
                test -n '$folder' && echo You chose: $REPLY\) $folder && break;
                echo 'Wrong entry, try again.';
                continue;
            done;
            ;;

Вам не хватает ключевого слова for, while или until для начала цикла.

6
28.01.2020, 02:14

Теги

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