Apenas uma nota: Como o ifconfig geralmente exibe mais de uma conexão (além da conexão de loopback), esse código cria uma única variável de cadeia com cada endereço IP separado do seguinte por uma nova linha. O meu parece assim:
bigbird@sananda:~/pq$ export IP='/sbin/ifconfig | grep 'inet addr:'|\
grep -v '127.0.0.1'| cut -d: -f2 | awk '{print $1}''
bigbird@sananda:~/pq$ echo "[${IP}]"
[192.168.126.1
192.168.114.1
192.168.1.2]
bigbird@sananda:~/pq$
Para realmente usar isso para algo, provavelmente teria que ser analisado mais (dividindo a string em novas linhas).
Uma forma de lidar com isso seria colocar as strings de endereço IP nos elementos da matriz para começar:
export IP=($(/sbin/ifconfig | grep 'inet addr:'|grep -v '127.0.0.1'| cut -d: -f2 |\
awk '{printf "%s ", $1}'))
for (( I=0; I<${#IP[@]}; I++ ))
do
echo "${I} [${IP[${I}]}]"
done
bigbird@sananda:~/bin$ mytest
0 [192.168.126.1]
1 [192.168.114.1]
2 [192.168.1.2]
bigbird@sananda:~/bin$
Os parens adicionados () transformam a saída em elementos da matriz.
A impressão foi alterada para printf para adicionar um espaço em branco (o caractere separador de padrão) após cada IP e para eliminar as novas linhas.
A notação de retrocesso:
'...'
para transformar a saída de um comando em uma string também foi substituído pela sintaxe mais recente $ (...).
O loop for é incluído apenas para mostrar os resultados e uma maneira de acessá-los.