|
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 campo4para 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 ; doneAcho 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 $DBdonee 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
[Prev in Thread] | Current Thread | [Next in Thread] |