[Tech] mysq e backticks

Cosimo Vagarini cosimo@firenze.linux.it
Sab 4 Dic 2004 12:40:26 CET


Leonardo Boselli wrote:
> Mi serve di dare in mnasto a un programma come parametri l'output di 
> una query mysql:
> 
> exempio:
>   mail -s $1 `query $2`
> ossia che se metto tale script e lo chiamo com
> 
> cat messggio.txt | script "avviso scadenza" "use dbab ; \
>        select  emailaddr from cred\
>                 where d1 ge 20041201 and d1 lt 20059402"
> 
> vorrei che mi mandasse il messaggi atutti coloro che risultano nel; 
> archivio.
>  cercando nel man di mysql  trovo che la opzione batch, a aprte che 
> richiede uno script file e non ho idea come dargli i comandoi a linea 
> comando, mi da l'output con iu record separati da Nl e non da SP come 
> si apetterebbe mail.
> c'è un modo di ottenere facilmente quanto richiesto (senza fare un 
> wrapper php o perl) ???

A parte la semi-illeggibilità della tua email puoi usare (se ho capito
quello che vuoi, ovviamente) un ciclo for di bash

for f in `output del mysql`
do
    cat messaggio | script "avviso" $f
done

l'output del mysql lo ottieni con l'opzione -e

mysql -u xxxx -pyyyy -hzzzzz.zz.zz nomedb -e "select ..."

che puoi ridirigere su un file o usare come standard input
del ciclo for. Tieni presente che mysql nell'output rediretto
lascia comunque la riga di intestazione, quindi la prima riga
dell'output la devi scartare.

Cosimo.

P.S. Bella quella data : "20059402" :)



Maggiori informazioni sulla lista flug-tech