Bash Básico - Se / Então com Operador Booleano

1

Como você pode ver, eu configurei um script simples para pingar o google (8.8.8.8) que deveria responder com "Good Ping"

if [ "ping -c 1 8.8.8.8 | grep 64 | cut -c 1-2" == '64' ];  then echo "Good Ping"; fi

Mas nunca responde com sua declaração de eco

Ao mesmo tempo, posso executar:

ping -c 1 8.8.8.8 | grep 64 | cut -c 1-2

Isso resolve para '64' sem um problema

Eu não entendo que o roteiro principal nunca imprime "Bom Ping", alguém poderia explicar?

    
por Jay Holister 15.11.2015 / 21:01

1 resposta

3

A string ping -c 1 8.8.8.8 | grep 64 | cut -c 1-2 nunca é igual a 64, mas é isso que você testa. Se você quiser testar um comando, use o comando de substituição:

if [ $(ping -c 1 8.8.8.8 | grep 64 | cut -c 1-2) == 64 ] ; then
    echo Good Ping
fi

'...' pode ser usado em vez de $(...) .

    
por 15.11.2015 / 21:04