Ошибка Cygwin в угловых скобках < >

Поэтому я пытаюсь запустить скрипт оболочки в Cygwin, и в разделе вырубки, который я разместил ниже, он вылетает с ошибкой, которая гласит:

new.sh: строка 8: синтаксическая ошибка рядом с неожиданным токеном `newline'

#!/bin/sh
set -eu

usage(){
    echo "$(cat <<"EOF")"
      sh new.sh <--repo REPO>+

    --repo | -r <REPO_URL>
      url of a repository to analyze
      REQUIRES --repo OR --repo-file

    --save-credentials | -s
      save credentials (in plain text) after running

    --help | -h
      shows this message

    EOF
}

Там нет возврата каретки, вызывающие это сообщение об ошибке. Кажется, это в результате угловых скобок <и>. После их удаления он позже падает на () скобки.

Это проблема кода или проблема Cygwin? Может кто-нибудь предложить исправление?

Спасибо

1 ответ

Решение

Зачем echo "$(cat <<"EOF")"? Упростить: cat <<'EOF'

Кроме того, завершающий EOF не может иметь предшествующий пробел, если вы не используете <<- и есть строго символы табуляции для отступа. http://www.gnu.org/software/bash/manual/bashref.html

Другие вопросы по тегам