SMarcell
(usa Slackware)
Enviado em 04/11/2011 - 15:32h
-----
OLD_IFS=$IFS
IFS='.'
-----
A variável de ambiente 'IFS' é a responsável pela separação de campos no shell, e seu valor padrão é espaço em branco.
O que fiz foi salvar o valor padrão numa variável auxiliar, e temporariamente alterar o valor dela para utilizar como separador o caractere '.', já que é o mesmo que separa os octetos dum endereço IP.
Portanto se você der um 'echo $ip' após as linhas acima, verá que a saída será assim:
xxx xxx xxx xxx
Já que o separador padrão agora é o caractere '.'.
-----
set - $ip
-----
Com a instrução 'set' (comando built-in do shell) eu transformo cada octeto num argumento ($1, $2, $3 e $4) para poder trabalhar separadamente com cada um.
-----
for i in $primeiro_octeto $segundo_octeto $tercerio_octeto $quarto_octeto
do
printf '%08d\n' $i # no casso isso aqui é pra mostrar "0" até completar "8" digitos?
done
-----
Exatamente! O 'printf' irá preencher com zeros à esquerda a string até que a mesma atinja o comprimento de 8 caracteres.
-----
IFS=$OLD_IFS
-----
Aqui simplesmente restauro o valor padrão da variável IFS.
Ah, para mostrar tudo na mesma linha, remova a quebra-de-linha '\n' no 'printf'.