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

255
sbowenwilliams

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

networksetup -removepreferredwirelessnetwork 

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

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

В настоящее время у меня есть:

networksetup -removepreferredwirelessnetwork en1 && say "Network deleted" 

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

Мысли?

2

1 ответ на вопрос

1
pabouk

It means that networksetup does not behave very well and returns 0 regardless the error message. This code will print the return code 0 in both cases:

networksetup -removepreferredwirelessnetwork en1 ; echo $? 

The solution is to parse the output:

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