Execute o comando bash se a rede sem fio for excluída?

2

Como parte de um plist que estou escrevendo para o OS X, eu preciso executar o comando "say" se uma rede sem fio for excluída com sucesso usando:

networksetup -removepreferredwirelessnetwork

Se uma rede não for excluída, será exibido:

Network (network name) was not found in the preferred networks list

Atualmente tenho:

networksetup -removepreferredwirelessnetwork en1  &&  say "Network deleted"

(onde en1 é o nome da interface de rede), mas isso ainda diz "Rede excluída" mesmo que uma rede não seja excluída.

Pensamentos?

    
por sbowenwilliams 10.10.2013 / 00:50

1 resposta

1

Isso significa que networksetup não se comporta muito bem e retorna 0 , independentemente da mensagem de erro. Este código irá imprimir o código de retorno 0 em ambos os casos:

networksetup -removepreferredwirelessnetwork en1 ; echo $?

A solução é analisar a saída:

networksetup -removepreferredwirelessnetwork en1 2>&1 | grep -q "was not found in the preferred networks list" && say "Network deleted"
    
por 10.10.2013 / 01:36