Bash-Befehl ausführen, wenn das drahtlose Netzwerk gelöscht wird?

386
sbowenwilliams

Als Teil einer Liste, die ich für OS X schreibe, muss ich den Befehl "say" ausführen, wenn ein drahtloses Netzwerk erfolgreich gelöscht wurde.

networksetup -removepreferredwirelessnetwork 

Wenn ein Netzwerk nicht gelöscht wird, hat es folgende Auswirkungen:

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

Ich habe momentan:

networksetup -removepreferredwirelessnetwork en1 && say "Network deleted" 

(Wo en1ist der Name der Netzwerkschnittstelle), der jedoch immer noch "Network gelöscht" lautet, auch wenn ein Netzwerk nicht gelöscht wird.

Gedanken?

2

1 Antwort auf die Frage

1
pabouk

Dies bedeutet, dass sich networksetupdas Verhalten nicht sehr gut verhält und 0unabhängig von der Fehlermeldung zurückgegeben wird. Dieser Code gibt den Rückkehrcode 0in beiden Fällen aus:

networksetup -removepreferredwirelessnetwork en1 ; echo $? 

Die Lösung besteht darin, die Ausgabe zu analysieren:

networksetup -removepreferredwirelessnetwork en1 2>&1 | grep -q "was not found in the preferred networks list" && say "Network deleted"