提示语法错误 "do" unexpected(expecting "fi")

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

提示语法错误 "do" unexpected(expecting "fi")

#1

帖子 tosail2010 » 2011-04-26 14:42

我安装的是Ubuntu10.04
在bash下运行一个shell的脚本文件,提示错误如标题,下文是运行的一段脚本,开头是行号
#19 if [ -d ./source/osdrv/toolchains/arm-arm-linux ]
#20 then
#21 cd ./source/osdrv/toolchains/arm-arm-linux
#22 chmod 777 cross.install
#23 ./cross.install
#24 cd -
#25 fi
#26
#27 if [ -d ./source/osdrv/toolchains/arm-arm-linux ]
#28 then
#29 cd ./source/osdrv/toolchains/arm-arm-linux
#30 chmod 777 cross.install
#31 ./cross.install
#32 cd -
#33 fi

错误是在第25,和30行出现的

感觉像是个bug
A year's plan starts with spring.
头像
lexdene
帖子: 434
注册时间: 2010-02-21 16:19
来自: 大连
联系:

Re: 提示语法错误 "do" unexpected(expecting "fi")

#2

帖子 lexdene » 2011-04-26 20:34

if后面应该有个分号吧?

代码: 全选

if [ -d ./source/osdrv/toolchains/arm-arm-linux ];
这样您试试。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 提示语法错误 "do" unexpected(expecting "fi")

#3

帖子 fnan » 2011-04-26 22:14

无法重现问题。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 提示语法错误 "do" unexpected(expecting "fi")

#4

帖子 aerofox » 2011-04-28 16:55

确认是这个文件中的错误吗? 是不是 cross.install 文件中的错误?
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

Re: 提示语法错误 "do" unexpected(expecting "fi")

#5

帖子 tosail2010 » 2011-04-29 9:08

我删除了原来sh的软链接,自己创建一个指向bash的软链接,问题就解决了。
A year's plan starts with spring.
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

Re: 提示语法错误 "do" unexpected(expecting "fi")

#6

帖子 tosail2010 » 2011-04-29 10:00

lexdene 写了:if后面应该有个分号吧?

代码: 全选

if [ -d ./source/osdrv/toolchains/arm-arm-linux ];
这样您试试。
加分号,通常后面跟then,如果then是另起一行的话。
if [ ...... ]; then
或者
if [ ...... ]
then

但是我也见过这样写的
if [ ....... ];
then
谁给说说,困惑。
A year's plan starts with spring.
malespy
帖子: 1
注册时间: 2011-07-18 21:27

Re: 提示语法错误 "do" unexpected(expecting "fi")

#7

帖子 malespy » 2011-07-18 21:29

貌似运行 sudo dpkg-reconfigure dash
之后选择“否”,就可以了
回复