语法错误:" fi"在bash脚本中意外(期待"然后")

时间:2015-05-04 18:44:50

标签: bash command-line scripting sh

我尝试做脚本:

#!/bin/bash
IP='192.168.1.1'
fping -c1 -t300 $IP 2>/dev/null 1>/dev/null
if [ "$?" = 0 ]
then
    echo "Host found"
else
    echo "Host not found"
fi

然后我转过身来:

pi@raspberrypi ~ $ sh /home/pi/sh/test.sh

/home/pi/sh/test.sh: 9: /home/pi/sh/test.sh: Syntax error: "fi" unexpected (expecting "then")

问题出在哪里?

4 个答案:

答案 0 :(得分:8)

你可以尝试

$ dos2unix /home/pi/sh/test.sh

再次运行。

答案 1 :(得分:3)

很可能这是因为脚本中的回车\r。尝试运行此命令来清理脚本。跑一次将备份原始文件。

perl -pi.bak -e 's/\r$//' /home/pi/sh/test.sh

答案 2 :(得分:1)

if xxx then
  commond
fi

语法错误:“ fi”意外(期望“ then”)

尝试:

if xxx 
then
  commond
fi

没关系。

答案 3 :(得分:0)

如果要在Windows上使用Notepad ++编辑脚本文件,则可以使用以下命令从程序菜单转换EOL

Edit => EOL Conversion => Unix (LF)