Você não precisa de muito para fazer isso, basta declarar eth
variable como uma matriz (e alterar a maneira como ele é acessado):
#!/bin/bash
ethcounter=$(ifconfig -a | egrep --count "eth[0-9]+")
ethindex0=$((ethcounter-1))
declare -a eth
echo ethindex0 = $ethindex0
for ((i=0; i<=ethindex0; i++))
do
eth[$i]=$(ifconfig eth$i)
echo "eth[$i]" = "${eth[$i]}"
done
Eu também ajustei levemente o parâmetro egrep
, fazendo com que as linhas correspondentes contenham a palavra 'ether'. Claro que provavelmente precisa de mais do que isso, mas você pode tentar descobrir por conta própria.
Como jordanm observou corretamente nos comentários: não presuma que as interfaces sejam numeradas sequencialmente. Você deve, em vez disso, grep
fora o que você quer, e processar todos os valores que você tem, e armazená-los em uma matriz associativa (indexada por nomes de interface em vez de números).
Nota lateral: A interface pode ter mais de um endereço IP. Isso, e ifconfig
entrando em depreciação, pode encorajá-lo a usar ip
, especialmente ip addr
- como neste caso é suportado lá.