我正在尝试在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问题?有人可以建议修复吗?
答案 0 :(得分:2)
为什么echo "$(cat <<"EOF")"
?简化:cat <<'EOF'
此外,终止EOF不能具有前面的空格,除非您使用<<-
并且有严格的制表符要缩进。 http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents