[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:[shell-script] Variáveis e arquivos....
From: |
MrBiTs |
Subject: |
Re:[shell-script] Variáveis e arquivos.... |
Date: |
Tue, 18 Oct 2005 21:33:58 -0300 |
/*
TEnho conseguido fazer muita coisa por aqui. Eu lido com mysql e sempre
que armazeno alguma consulta extensa numa variável, por exemplo:
var=`mysql etc.. etce.... `
posso resgatar dados dessa variável.
Meu problema: se minha consulta foi uma matriz desse tipo,
azul dois quarta-feira
amarelo quatro sábado
preto quinze domingão
Eu resgato cada linha tranquilamente, por exemplo com:
echo $var | grep 'quatro'
que me retorna
amarelo quatro sábado
O caso é que a consulta ao banco é grande e extensa. Então tive a
idéia de armazená-la em disco e ter a op´cão de usar esse arquivo do
disco. O problema é que quando fa´co algo do tipo
echo $var > /tmp/consultadomysql
ele armazena sem as quebras de linha e sem os tabs, assim:
azul dois quarta-feira amarelo quatro sábado preto quinze domingão
tornando minha consulta por linha inviável. Sei que está me faltando
conhecer alguma coisa, mas não consegui descobrir o quê, vcs podem me
ajudar???
*/
Acho que o seu problema se resolve num laço. Digamos que você faça:
for LINHA in $(mysql -u usuario -psenha -N -e "Select * from tabela" BANCO) ;
do echo $LINHA ; done
Acho uma forma mais inteligente de se tratar o resultado de uma consulta a
dados. Vai bem de encontro às filosofias de desenvolvimento que dizem que uma
consulta deve ser tratada linha a linha, campo a campo.
Ainda podemos estender esse conceito para algo como:
mysql -u root -psenha -N -e "Select host,user,db from db" mysql | \
while read HOST USER DB ; do
echo $HOST
echo $USER
echo $DB
done
e ao invés de tratarmos nossa linha de dados como uma coisa só ( sempre
passÃvel de ser separada por um set - $LINHA ), temos como tratar os campos
individualmente, sem contar a economia de processamentos, IO...
[As partes desta mensagem que não continham texto foram removidas]