shell script中的syntax error near unexpected token `then' 问题

原创 2014年06月14日 22:10:48

其实这是一个shell下判断符号 [ ] 加空格的问题,一定要小心

编写《鸟哥》给的示例程序时,运行时出现:syntax error near unexpected token `then'

[root@localhost scripts]# vi sh06-02.sh
[root@localhost scripts]# ./sh06-02.sh
Please input(Y/N): Y
./sh06-02.sh: line 8: syntax error near unexpected token `then'
./sh06-02.sh: line 8: `if[ "$yn" == "Y" ] || [ "$yn" == "y" ]; then'

打开脚本文件如下:

发现then和fi不匹配,红底白字高亮的意思就是此处可能有错?,

上网搜索,原来if和中括号[]之间也需要空格键隔开,修改后vim语法就不报错了,如下:


关于判断符号[ ],也就是中括号,下面引自鸟哥的解释:

除了我们很喜欢使用的 test 之外,其实,我们还可以利用判断符号『 [ ] 』(就是中括号啦) 来进行数据的判断呢!举例来说,如果我想要知道 $HOME 这个变量是否为空的,可以这样做:

[root@www ~]# [ -z "$HOME" ] ; echo $?

使用中括号必须要特别注意,因为中括号用在很多地方,包括万用字节与正规表示法等等,所以如果要在 bash 的语法当中使用中括号作为 shell 的判断式时,必须要注意中括号的两端需要有空白字节来分隔喔!假设我空白键使用『□』符号来表示,那么,在这些地方你都需要有空白键:

[  "$HOME"  ==  "$MAIL"  ]
[□"$HOME"□==□"$MAIL"□]
 ↑       ↑  ↑       ↑

其实if与[]之间也是需要空格键隔开的

上面的例子在说明,两个字串 $HOME 与 $MAIL 是否相同的意思,相当於 test $HOME = $MAIL 的意思啦!而如果没有空白分隔,例如 [$HOME==$MAIL] 时,我们的 bash 就会显示错误信息了!这可要很注意啊!所以说,你最好要注意:

  • 在中括号 [] 内的每个组件都需要有空白键来分隔;
  • 在中括号内的变量,最好都以双引号括号起来;
  • 在中括号内的常数,最好都以单或双引号括号起来。


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

转载:http://blog.sina.com.cn/s/blog_695ef52801018f09.html 在xshell下,用notepad++写了个简单的shell脚本,内容如下: #...
  • m53931422
  • m53931422
  • 2015年01月14日 17:41
  • 3653

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

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

shell “syntax error near unexpected token '$'\r''” 错误解决方法

这种情况发生的原因是因为你所处理的文件换行符是dos格式的"\r\n"。 可以使用cat -v 文件名 来查看换行符是否是,如果是上述的,则行结尾会是^m。 需要转换成linux/...
  • piaoxuefengqi
  • piaoxuefengqi
  • 2014年02月28日 16:22
  • 2790

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

linux--shell错误:syntax error near unexpected token ‘('

这几天编写了几个简单的shell程序,然后都出现了syntax error near unexpected token ‘(' 的错误,然后实在是检查不出错误;后面百度了才找到的原因: 之前错误的程序...
  • acm_lkl
  • acm_lkl
  • 2015年01月23日 22:36
  • 3593

运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”

运行shell脚本提示“syntax error near unexpected token for((i=0;i
  • yeweiouyang
  • yeweiouyang
  • 2014年06月18日 11:35
  • 2846

脚本报syntax error near unexpected token `(',

本来可以跑的脚本,最近忽然在运行时报syntax error near unexpected token `(',,但代码语法看起来并没有什么明显的错误 。 怀疑是用特殊字符造成的,使用"vi -b...
  • xcltapestry
  • xcltapestry
  • 2014年03月25日 20:47
  • 8035

syntax error near unexpected token `$’do\r”报错问题

不知道大家有没有在windows上面编写shell脚本,然后部署到linux上运行的经历,如果你做过类似的事情,那你可能遇到过这个问题:syntax error near unexpected tok...
  • limm33
  • limm33
  • 2016年11月05日 11:07
  • 2680

syntax error near unexpected token `elif'

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

syntax error near unexpected token `

http://hi.baidu.com/xwind85/blog/item/0fecd213d65c2c1b5baf5309.html今天编写了一个执行备份的脚本,在ue里面编写,让后传递到linux...
  • zreodown
  • zreodown
  • 2012年07月30日 18:10
  • 4157
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell script中的syntax error near unexpected token `then' 问题
举报原因:
原因补充:

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