bic*_*jai 5 linux bash if-statement syntax-error unexpectendoffile
W/hen我运行以下代码片段
#!/bin/bash
if [ "foo" = "foo" ];
then
echo "true"
else
echo "false"
fi
echo "end"
Run Code Online (Sandbox Code Playgroud)
我明白了
sfm_write_buffer_test.sh: line 9: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
这没有任何意义.echo语句工作正常,但遇到if语句时会出现上述错误.
你在Cygwin,对吧?
正如我在评论中所说,当我复制并粘贴您的脚本并在我的系统上运行它时,它可以工作; 输出是
true
end
Run Code Online (Sandbox Code Playgroud)
但是当我将行结尾从Unix样式'\n'更改为Windows样式时'\r\n',我得到了相同的错误.
使用Windows样式的行结尾,bash没有看到then关键字; 它看到一个名为的命令then\r.它从不试图,因为它是扫描用于匹配来执行它then或者fi用于if关键字(其中确认,因为它不是在该行的末端).
确保您的shell脚本使用Unix样式的行结尾.
问题是脚本末尾的 CRLF。当 Shell 脚本看到 Windows 样式的行结尾时,会引发此错误。您需要将 shell 脚本中的行结尾替换为 Unix 风格的 LF。每个 IDE 都有自己的方法来执行此操作。
Sublime Text 2 ==> 查看 -> 行结尾 -> Unix
Notepad++ ==> 编辑 -> EOL 转换 -> UNIX/OSX 格式
进行更改并保存文件后,shell 脚本执行时应该不会出现错误。
| 归档时间: |
|
| 查看次数: |
10485 次 |
| 最近记录: |