J'ai ce script:
#!/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
Lorsque j'essaye de l'exécuter, voici le résultat:
$ sh /home/pi/sh/test.sh
/home/pi/sh/test.sh: 9: /home/pi/sh/test.sh: Syntax error: "fi" unexpected (expecting "then")
Où est le problème?
On dirait que le script contient des caractères CR (\ r). Si vous avez édité ce script à partir de Windows, cela expliquerait pourquoi. L'exécution de ceci devrait révéler les caractères de retour chariot autrement "invisibles":
sed -n l /home/pi/sh/test.sh
(C'est L minuscule, pas 1). Si vous voyez un \r
dans ce qui précède, voir FAQ 52 pour différentes façons de s'en débarrasser.
En passant, ne mettez pas .sh
extension sur un script bash, et n'exécutez pas de script bash avec sh
.