Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Syntax error: "fi" unexpected (expecting "then") in bash script

I try to do the script:

#!/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

and i turn it:

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")

where is the problem?

like image 349
Kwiatkowski Avatar asked May 04 '15 18:05

Kwiatkowski


3 Answers

If you are editing the script file with Notepad++ on windows you can convert the EOL from the program menu with

Edit => EOL Conversion => Unix (LF)
like image 60
Andrea Mauro Avatar answered Oct 08 '22 18:10

Andrea Mauro


You can try

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

and run it again.

like image 31
Diego Torres Milano Avatar answered Oct 08 '22 18:10

Diego Torres Milano


Most probably this is because carriage-return \r in your script. Try run this command to clean-up your script. Just run once. Original file will be backed up.

perl -pi.bak -e 's/\r$//' /home/pi/sh/test.sh
like image 37
tivn Avatar answered Oct 08 '22 17:10

tivn