Você pode fazer isso:
has_ports() {
ls -A "/sys/devices/virtual/net/$1/brif/" 2> /dev/null | grep -q .
}
has_ports br0 || brctl delbr br0
Ou:
if ! has_ports br0; then
brctl delbr br0
fi
(observe que você precisa do -A
, pois os nomes da interface podem começar com .
).
Para contar o número de portas:
com zsh
:
ports=(/sys/devices/virtual/net/$bridge/brif/*(DN:t))
printf '%s\n' "$#ports ports in $bridge"
(:t)
para ter apenas os nomes dos arquivos em vez de caminhos completos.
com bash
:
shopt -s nullglob dotglob
ports=("/sys/devices/virtual/net/$brige/brif/"*)
printf '%s\n' "${#ports[@]} ports in $bridge"
(observe que as portas contêm os caminhos completos, pois bash
não tem equivalente para zsh
' :t
).
Ambos retornariam 0 para uma ponte que não existe.