Ошибка 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