Выполнить команду 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"