脚本 sh 语法错误

脚本 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

当我尝试运行它时,结果如下:

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

哪里有问题?

答案1

听起来脚本包含一些 CR (\r) 字符。如果您从 Windows 编辑过此脚本,那就可以解释原因。运行此脚本应该会显示原本“不可见”的回车符:

sed -n l /home/pi/sh/test.sh

(这是小写的 L,而不是 1)。如果您\r在上面看到 a,请参阅常见问题 52寻找各种方法来摆脱它们。

附注:不要.sh在 Bash 脚本上放置扩展名,也不要使用 运行 Bash 脚本sh

相关内容