当我运行以下代码片段时
#!/bin/bash
if [ "foo" = "foo" ];
then
echo "true"
else
echo "false"
fi
echo "end"
i get
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
。它从不尝试执行它,因为它正在扫描匹配的then
or fi
为了if
关键字(它可以识别它,因为它不在行的末尾)。
确保您的 shell 脚本使用 Unix 风格的行结尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)