shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Variáveis e arquivos....


From: Mauricio
Subject: Re: [shell-script] Variáveis e arquivos....
Date: Wed, 19 Oct 2005 09:18:37 -0200
User-agent: Mozilla Thunderbird 1.0.6 (X11/20050716)

Oi!
Tudo bem?
Eu acho que não expliquei direito. Fiz um menu no início do script para escolher se quero fazer a consulta no momento (e essa parte faz bom uso do while e do read atribuindo cada campo a sua variável - obrigado! - e já está funcionando) ou então quero usar uma consulta anterior salva em disco. E o problema está nisso. Essa consulta anterior salva em disco não permanece num formato que eu possa usar um laćo como o while, por exemplo, ou então cortar campos com o akw ou cut. O que acontece:

Suponha que eu tenha uma consulta do tipo:

campo1 campo2 campo3 campo4
campo1 campo2 campo3 campo4
campo1 campo2 campo3 campo4
campo1 campo2 campo3 campo4
campo1 campo2 campo3 campo4
campo1 campo2 campo3 campo4
campo1 campo2 campo3 campo4

para n linhas (e são muitas eheheh). Depois de armazenada na variável $CONSULTA, por exemplo, eu estou salvando desta forma:

echo $CONSULTA  > /tmp/consultadehoje

Quando eu leio esse arquivo eu descubro que ele ficou assim:



campo1 campo2 campo3 campo4 campo1 campo2 campo3 campo4 campo1 campo2 campo3 campo4 campo1 campo2 campo3 campo4 campo1 campo2 campo3 campo4 campo1 campo2 campo3 campo4 campo1 campo2 campo3 campo4 campo1 campo2 campo3 campo4


Entendeu? Ou seja, sem a quebra de linha eu nào tenho como usar um laćo ou qualquer outro separador por campos (na verdade eu tenho, eu sei, eu poderia fazer uma análise do tipo de dado com um egrep e expressão regular e com isso delimitar as linhas - mas eu acho que isso é tornar mais longo algo que pode ser mais rápido). Então a pergunta é: Como eu armazeno essa variável $CONSULTA em disco mantendo o formato original da consulta?

Abraćo e obrigado pela atenćào,

Ricio



*/

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]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Links do Yahoo! Grupos










reply via email to

[Prev in Thread] Current Thread [Next in Thread]