您的位置:首页 > 运维架构 > Shell

shell if判断语句 报错:syntax error near unexpected token `elif'

2015-01-14 17:41 661 查看
转载:http://blog.sina.com.cn/s/blog_695ef52801018f09.html

在xshell下,用notepad++写了个简单的shell脚本,内容如下:

#!/bin/bash
if [ "X$force" = "X1" ]; then
echo 1
elif [ "X$force" = "X2" ]; then
echo 2
elif [ "X$force" = "X3" ]; then
echo 3
else
echo 4
fi
运行报错:syntax error near unexpected token `elif'

【解决过程】

1.去notepad++中,视图->显示符号->显示所有符号,然后就看到了预料到的,所有的回车换行都是windows的CR LF:





得知是Linux和windows下的回车换行符不兼容的问题。

所以,剩下的就是去将windows下面的CR LF,转换为Linux下面的LF,即可。

此处,不需要再麻烦地去用其他dos2unix等工具了,notepad++就可以帮忙搞定:

编辑->档案格式转换->转换为UNIX格式:





即可将所有的 CR LF,转换为LF:





所以,越加发现notepad++的强大之处了。

然后再运行此shell脚本,即可正常运行了。

【总结】

linux/cygwin下面的shell脚本出现错误:

syntax error near unexpected token `elif'

是由于该脚本文件是在windows环境下创建编辑的,其默认是将所有的回车变成:

CR加上 LF,而Linux/Unix中的回车只是LF,所以导致解释器不认,出现此错误。

解决办法就是,将所有的CRLF转换为LF即可。

转换的方法有多种,比如用dos2unix,或用此处的notepad++帮我们转换,都可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐