如何修复尖括号上的Cygwin错误< >在shell脚本中?

时间:2013-05-27 11:26:57

标签: shell cygwin newline

我正在尝试在Cygwin中运行一个shell脚本,在我发布的下面的部分中,它崩溃了,出现了一个错误:

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

1 个答案:

答案 0 :(得分:2)

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

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