<分区>
当我运行以下代码片段时
#!/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 语句时,它会给出上述错误。
<分区>
当我运行以下代码片段时
#!/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
关键字的匹配 then
或 fi
(它识别是因为它不在末尾线)。
确保您的 shell 脚本使用 Unix 风格的行结尾。
关于linux - 在 bash 脚本中,if 语句出现意外的 "syntax error: unexpected end of file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237118/