erro de sintaxe do script sh [fechado]

1

Eu tenho este 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

Quando tento executá-lo, esse é o resultado:

$ sh /home/pi/sh/test.sh         
/home/pi/sh/test.sh: 9: /home/pi/sh/test.sh: Syntax error: "fi" unexpected (expecting "then")

Onde está o problema?

    
por Kwiatkowski 04.05.2015 / 20:40

1 resposta

2

Parece que o script contém alguns caracteres CR (\ r). Se você editou este script do Windows, isso explicaria por quê. Executar isso deve revelar os caracteres de retorno de carro "invisíveis":

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

(Isso é minúscula L, não 1). Se você vir um \r acima, consulte FAQ 52 para obter várias maneiras de se livrar deles.

Em uma nota secundária, não coloque a extensão .sh em um script bash e não execute um script bash com sh .

    
por geirha 04.05.2015 / 20:54