【问题标题】:cygwin bash: unexpected EOF [duplicate]cygwin bash:意外的EOF [重复]
【发布时间】:2018-06-11 13:36:50
【问题描述】:

以下 bash 代码有什么问题?

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

生成“意外的 EOF”错误。 Windows 10 中的 Cygwin 2.10.0(0.325/5/3)。

【问题讨论】:

  • 文件中是否有 DOS 回车符,尤其是紧邻then
  • 这就是问题所在。经过 36 年的编程,你仍然每天都在学习:D

标签: bash cygwin


【解决方案1】:

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

if [ -z "$1" ]; then\r
  echo "Usage: $0 {file}"\r
fi\r

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2015-04-19
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多