cygwin bash: 意外的 EOF

cygwin bash: unexpected EOF

以下 bash 代码有什么问题?

#!/bin/bash
if [ -z "" ]; then
  echo "Usage: [=11=] {file}"
fi

生成错误 "Unexpected EOF"。 Windows 10.

中的 Cygwin 2.10.0(0.325/5/3)

您的文件中有 DOS 行结尾,这意味着 bash 解析器看到

if [ -z "" ]; then\r
  echo "Usage: [=10=] {file}"\r
fi\r

它看到的不是完整的 if 语句,而是一个语句的开头,该语句的条件包括(到目前为止)命令 [ -z "" ]then\recho "Usage: [=15= ] {file}"\r,以及 fi\r。解析器仍在寻找 then 关键字来终止条件列表,但找到了文件结尾。

将您的脚本保存为 POSIX 文本文件,使用 \n 作为行尾,而不是 \r\n