Substituição de comando na declaração if [duplicata]

1

Estou tentando comparar o resultado de uma substituição de comando a uma string, como esta:

if [$(ping $1)=="ping: unknown host localhosts"]
then
  echo "no";
else
  echo "yes";
fi

O que estou fazendo de errado aqui?

    
por Philip Kirkbride 29.07.2017 / 01:51

1 resposta

4

Primeiro, você esqueceu o espaço e as citações. Em seguida, é um erro, então você deve pegar stderr. Finalmente localhosts é provavelmente $1 .

if [ "$(ping -c1 "$1" 2>&1)" = "ping: unknown host $1" ]

Note que a mensagem ping está provavelmente sujeita às suas configurações de localidade. Se você quiser apenas testar a resolução de nomes de um host, ping não é exatamente a ferramenta certa. Tente isso:

if getent hosts "$1" > /dev/null; then ...
    
por 29.07.2017 / 02:04