Во-первых, длинный путь утилиты airport
ужасно громоздок.Давайте создадим символическую ссылку.
sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/bin/airport
Предполагая вывод программы, подобный этому (основываясь на некотором поиске в Google, я взял this в качестве примера):
agrCtlRSSI: -76
agrExtRSSI: 0
agrCtlNoise: -92
agrExtNoise: 0
state: running
op mode: station
lastTxRate: 24
maxRate: 54
lastAssocStatus: 0
802.11 auth: open
link auth: wpa2-psk
BSSID: c0:3e:f:2f:c3:ad
SSID: B&Q_Public
MCS: -1
channel: 4
и желаемый результат, равный B&Q_Public
(SSID), достаточно использовать одну команду awk
:
airport -I | awk -F ": " '/ SSID:/{print $2}'
Примечания:
- Разделитель полей установлендо
': '
, значения всегда будут в $2
. - До
SSID:
есть пробел, это препятствует совпадению строки с BSSID:
. - Нет необходимостизапустите
grep
дважды здесь, awk
может выдержать очень хорошо.
Здесь нигде не запускается eval
, так что я не думаю, что одна эта строка может вызвать ошибку, которую вы показываете.