![脚本 sh 语法错误](https://linux22.com/image/871456/%E8%84%9A%E6%9C%AC%20sh%20%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF%20.png)
我有这个脚本:
#!/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
。