$ texto=eu:uso:linux $ for i in $texto > do > echo $i > done
Sem a variavel IFS= definida, a saída acima seria esta:
eu:uso:linux
Agora se definirmos a variável IFS com um valor de “:” por exemplo:
$ IFS=: $ for i in $texto > do > echo $i > done
A saída será:
eu uso linux
Ou seja um caractere nessa variável passa a operar como um delimitador, a utilidade prática disto pode ser observada quando precisamos separar algum fluxo de texto especifico que pode vir de um arquivo previamente preenchido e com seus campos separados por um delimitador, que pode ser qualquer caractere definido para IFS (incluindo um TAB). Abaixo segue um pequeno script de exemplo de utilização de IFS=, que utiliza como entrada o arquivo /etc/passwd e mostra seus dados de maneira ordenada :
Passwd()
{
echo “Nome do Usuario: $1″
echo “Senha: $2”
echo “Uid: $3″
echo “Gid: $4″
echo “Comentários: $5”
echo “Diretório home: $6”
echo “Shell padrão: $7”
}
IFS=’:' # variável IFS definida
while read nome senha uid gid comentario home shell_padrao
do
Passwd “$nome” “$senha” “$uid” “$gid” “$comentario” “$home” “$shell_padrao”
done
Copie o script acima e salve com o nome de password.sh (ou outro nome de sua preferência) e então rode-o passando o /etc/passwd como entrada:
$ ./password.sh < /etc/passwd
Se tudo correu bem ele deverá exibir uma lista com todos os usuários do sistema e todos os seus dados na ordem do /etc/passwd. Bom isso é tudo espero que tenham gostado até o próximo post…