linux - 在 bash 脚本中,if 语句出现意外的 "syntax error: unexpected end of file"

标签 linux bash if-statement syntax-error unexpectendoffile

<分区>

当我运行以下代码片段时

#!/bin/bash
if [ "foo" = "foo" ];
then
echo "true"
else
echo "false"
fi
echo "end"

我明白了

sfm_write_buffer_test.sh: line 9: syntax error: unexpected end of file

这没有任何意义。 echo 语句工作正常,但是当遇到 if 语句时,它会给出上述错误。

最佳答案

您使用的是 Cygwin,对吗?

正如我在评论中所说,当我复制并粘贴您的脚本并在我的系统上运行它时,它可以运行;输出是

true
end

但是当我将行尾从 Unix 样式 '\n' 更改为 Windows 样式 '\r\n' 时,我得到了与您相同的错误.

使用 Windows 风格的行尾,bash 看不到 then 关键字;它看到一个名为 then\r 的命令。它从不尝试执行它,因为它正在扫描 if 关键字的匹配 thenfi(它识别是因为它不在末尾线)。

确保您的 shell 脚本使用 Unix 风格的行结尾。

关于linux - 在 bash 脚本中,if 语句出现意外的 "syntax error: unexpected end of file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237118/

相关文章:

if-statement - 对可能不是数字的多个单元格求和

java - 读取文件并根据该行的内容执行功能

javascript - 如何将数据推送到数组中?

java - Play 不断写入光盘?在 Amazon ec2 上导致更高的账单

python - 在 python 中创建 CSV 文件,它将列出目录中带有服务器名称的所有文件

bash - 从目录名称中删除所有点(shell)

python - 添加用户的 bash 脚本

bash - 通告名称引用

php - UTF-8贯穿始终

python - 我可以使用 linux perf 获得 python 调用堆栈吗?