синтаксическая ошибка скрипта 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
задан 4 May 2015 в 12:12

1 ответ

Кажется, что сценарий содержит некоторый CR (\r) символы. Если бы Вы отредактировали этот сценарий из окон, которые объяснили бы почему. Выполнение этого должно показать "в других отношениях невидимые" символы возврата каретки:

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

(Это - нижний регистр L, не 1). Если Вы видите \r в вышеупомянутом, см. FAQ 52 для различных способов избавиться от них.

На ноте стороны, не помещайте .sh расширение в сценарий удара и не выполняйте сценарий удара с sh.

2
ответ дан 10 November 2019 в 10:54

Другие вопросы по тегам:

Похожие вопросы: