У меня есть этот сценарий:
#!/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")
В чем проблема?
Кажется, что сценарий содержит некоторый CR (\r) символы. Если бы Вы отредактировали этот сценарий из окон, которые объяснили бы почему. Выполнение этого должно показать "в других отношениях невидимые" символы возврата каретки:
sed -n l /home/pi/sh/test.sh
(Это - нижний регистр L, не 1). Если Вы видите \r
в вышеупомянутом, см. FAQ 52 для различных способов избавиться от них.
На ноте стороны, не помещайте .sh
расширение в сценарий удара и не выполняйте сценарий удара с sh
.