Eu tenho uma variável Vmac
que armazena valores de vários endereços MAC, coletados de wmic
chamada da seguinte forma:
Vmac='wmic --delimiter="," --authentication-file=/path/to/file //IP-ADDR "Select AdapterType,MACAddress from Win32_NetworkAdapter" | grep "Ethernet" | awk -F, '{print $3}'| sort | uniq | tr '\n' ' ''
Foi observado que, o número de valores contidos na variável Vmac
varia no intervalo de 1 a 5, para hosts diferentes. Eu tenho que separar cada um deles e armazená-los em uma variável VmacN
, onde N pode ter valores de 1 a 5.
Para alguns hosts, pode haver apenas um endereço MAC, por isso, teria apenas Vmac1
disponível. Considerando que, host com 4 NICs (e, portanto, endereços MAC) teria Vmac1
, Vmac2
, Vmac3
e Vmac4
.
Para tabularizar essa informação eficientemente, eu também preciso armazenar o valor NA
nas variáveis VmacN
, onde menos endereços MAC estão disponíveis (por exemplo, para máquina com 1 NIC, Vmac1
será AA:BB:CC:DD
, enquanto Vmac2
a Vmac5
será NA
. Enquanto na máquina com 4 NICs, somente Vmac5
será NA
).
Para isso, criei e testei um trecho de código, que é o seguinte:
if [ ! -z "$Vmac" ]
then
i=1
for mac in $Vmac
do
declare "Vmac${i}"="$mac"
((i++))
done
fi
printf "${Vmac1:-NA}"",""${Vmac2:-NA}"",""${Vmac3:-NA}"
Saída:
3C:40:20:52:41:53 88:51:FB:3F:0D:81 C8:CB:B8:CC:5F:D2,NA,NA
Quando impressa apenas Vmac1
, imprimirá endereços MAC inteiros (ou seja, valor de Vmac
).
Suponho que estou errado em iterar Vmac
.
Como fazer uma iteração através de uma variável que contém um valor de string?