私はこのスクリプトを持っています:
#!/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)文字が含まれているように聞こえます。このスクリプトをWindowsから編集した場合、その理由を説明できます。これを実行すると、「見えない」キャリッジリターン文字が表示されます。
sed -n l /home/pi/sh/test.sh
(1ではなく、小文字のLです)。上記に\r
が表示されている場合は、それらを取り除くためのさまざまな方法について FAQ 52 を参照してください。
補足として、bashスクリプトに.sh
拡張子を付けたり、sh
を指定してbashスクリプトを実行したりしないでください。