Вместо того, чтобы использовать переменную управления циклом "i", просто переберите все результаты.Мы можем использовать grep -v, чтобы исключить «home_wifi» из списка.
Возможно, нам следует использовать время и чтение, чтобы разрешить сетевые имена с пробелами, но вот версия цикла for, чтобы показать вам другой способиспользуйте для циклов.
#!/bin/bash
WIFIDEIVCE=$(networksetup -listallhardwareports | grep "Wi-Fi" -1 | tail -1 | awk '{print $2}')
for NETWORKNAME in $( networksetup -listpreferredwirelessnetworks ${WIFIDEIVCE} | tail -n+2 | grep -v home_wifi )
do
echo networksetup -removepreferredwirelessnetwork ${WIFIDEIVCE} "$NETWORKNAME"
done
Вот тот же код, организованный в цикле while, чтобы избежать проблем при наличии пробелов в именах вашей сети:
#!/bin/bash
WIFIDEIVCE=$(networksetup -listallhardwareports | grep "Wi-Fi" -1 | tail -1 | awk '{print $2}')
networksetup -listpreferredwirelessnetworks ${WIFIDEIVCE} | tail -n+2 | grep -v home_wifi |
while
read NETWORKNAME
do
echo networksetup -removepreferredwirelessnetwork ${WIFIDEIVCE} "$NETWORKNAME"
done
Я оставил 'echo'в коде, чтобы избежать проблем для других читателей, которые могут скопировать и вставить этот код.