Выполнить команду bash, если беспроводная сеть удалена?

Как часть plist, который я пишу для OS X, мне нужно выполнить команду "сказать", если беспроводная сеть успешно удалена, используя:

networksetup -removepreferredwirelessnetwork

Если сеть не удалена, она выдает:

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

У меня сейчас есть:

networksetup -removepreferredwirelessnetwork en1  &&  say "Network deleted"

(где en1 имя сетевого интерфейса), но оно по-прежнему гласит "Сеть удалена", даже если сеть не удалена.

Мысли?

1 ответ

Решение

Это означает, что networksetup не очень хорошо себя ведет и возвращается 0 независимо от сообщения об ошибке. Этот код напечатает код возврата 0 в обоих случаях:

networksetup -removepreferredwirelessnetwork en1 ; echo $?

Решение состоит в том, чтобы проанализировать вывод:

networksetup -removepreferredwirelessnetwork en1 2>&1 | grep -q "was not found in the preferred networks list" && say "Network deleted"
Другие вопросы по тегам