0

我试图让一个 shell 脚本在 Cygwin 中运行,并且在我在下面发布的缩减部分中它崩溃了,并显示如下错误:

new.sh:第 8 行:意外标记“换行符”附近的语法错误

#!/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 问题?有人可以建议修复吗?

4

1 回答 1

2

为什么echo "$(cat <<"EOF")"?简化:cat <<'EOF'

此外,终止的 EOF 不能有前面的空格,除非您使用<<-并且有严格的制表符来缩进。 http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents

于 2013-05-27T12:56:25.870 回答