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

转载 2015年01月14日 17:41:19

转载: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:

所有的换行都是windows的CRLF

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

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

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

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

cpp 转换为Unix格式

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

所有的都是linux的LF了

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

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

【总结】

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

syntax error near unexpected token `elif'

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

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

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

转换的方法有多种,比如用dos2unix,或用此处的notepad++帮我们转换,都可以。

syntax error near unexpected token `elif'

今天执行一个shell脚本,一直报错
  • dengchendeng
  • dengchendeng
  • 2014年04月05日 09:20
  • 2536

syntax error near unexpected token `('解决方法

今天在按表导入的时候出现报错: 语句如下:imp allscore/allscore@riskdb file=/home/oracle/db.29 tables=(NRBAC_OPERATION,N...
  • lihengfang
  • lihengfang
  • 2013年12月04日 15:55
  • 20291

shell编程报错:“syntax error near unexpected token `”

         今天写了个shell脚本,在自己机器上运行正常,给同事,运行报错syntax error near unexpected token `,左看右看shell脚本没有问题,没有办法go...
  • xyp84
  • xyp84
  • 2009年08月11日 19:12
  • 71146

shell if else 用法 syntax error near unexpected token `then'

shell if else 用法
  • wengyupeng
  • wengyupeng
  • 2016年03月24日 14:30
  • 3698

linux shell脚本syntax error near unexpected token `then'

1 #!/bin/sh       2 if["$SHELL"="/bin/bash"];then       3    echo "your login shell is the bash(bo...
  • nui111
  • nui111
  • 2016年02月03日 10:28
  • 1935

shell中的if elif else用法

#!/bin/bash if [ "a" == "b" ] then         echo yes elif [ "a" == "a" ] then         echo abc ...
  • u014783674
  • u014783674
  • 2014年04月25日 15:06
  • 10325

Shell编程中if-elif-else条件分支语句测试

测试shell脚本编程时,写了如下代码: 在对if-elif-else分支进行数值判断时, 发现一个奇怪的现象: 如果使用test conditon(即[ condition ])进行判定,当第一条i...
  • Sardkit
  • Sardkit
  • 2016年08月13日 17:57
  • 1468

shell中if-elif-else用法

shell中if-elif-else用法 #!/bin/bash  function myfun() {     echo "myfun"     return 0 } #判断标...
  • searchwang
  • searchwang
  • 2014年07月14日 20:49
  • 958

Shell脚本语法-- if/then/elif/else/fi

和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的 if [ -f ~/.bashr...
  • ljchlx
  • ljchlx
  • 2014年01月14日 14:58
  • 27795

linux shell 条件判断if else, if elif else....

linux shell 条件判断if else, if elif else....
  • m0_37138008
  • m0_37138008
  • 2017年05月30日 23:32
  • 2775
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell if判断语句 报错:syntax error near unexpected token `elif'
举报原因:
原因补充:

(最多只允许输入30个字)