语法错误:bash脚本中出现"fi"意外(期望"然后")

Kwi*_*ski 6 bash scripting command-line 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
Run Code Online (Sandbox Code Playgroud)

我把它转过来:

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")
Run Code Online (Sandbox Code Playgroud)

问题出在哪儿?

Die*_*ano 11

你可以试试

$ dos2unix /home/pi/sh/test.sh
Run Code Online (Sandbox Code Playgroud)

并再次运行它.


tiv*_*ivn 5

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

perl -pi.bak -e 's/\r$//' /home/pi/sh/test.sh
Run Code Online (Sandbox Code Playgroud)