Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
condition non réalisée
Envoyé par: NBaH

Bonjour,

J'ai un petit souci avec mon script.
enregistrement=""
lastdate="$(</tmp/dateULOG.mysql)"

affich() {
while read enregistrement; do
      if [ ! "$enregistrement" ]; then
        echo "aucune entrée"
      else
        sed 's/\([^      ]*\).*/\1/'<<< "$enregistrement" > /tmp/dateULOG
        echo "$enregistrement"
      fi
done
}

mysql -h "$my_server" -D "$my_DB" -u "$myUser" -p "$my_pwd" <<EOF | affich
select timestamp, oob_in, oob_out, udp_sport, tcp_sport, inet_ntoa(ip_saddr), inet_ntoa(ip_daddr), tcp_dport, udp_dport, tcp_ack
from ulog
where timestamp > "$lastdate"
order by id;
EOF

Je crois avoir tout essayé : options de test, expansions de paramètre...
S'il y a un/des enregistrement(s), il(s) s'affiche(nt).
Cependant, s'il n'y a pas d'enregistrement, "aucune entrée" n'apparaît pas...
?

Poste le Thursday 12 February 2009 01:11:13
Répondre     Citer    
Re: condition non réalisée
Envoyé par: Mo3bius

Salut,

Bah en fait tu testes si il y a des enregistrement au début, en condition de boucle, donc forcément si il n'y a pas d'enregistrement ta boucle ne s'exécutera pas donc n'affichera pas ton message.

A mon humble avis

Poste le Monday 2 March 2009 16:00:12
Répondre     Citer    
Re: condition non réalisée
Envoyé par: NBaH

Tout à fait, si la requête mysql n'extrait rien de la base de donnée, tout simplement, la boucle while n'est pas éxécutée, et par conséquent le test d'existence de la variable ne le sera pas non plus !

La solution apportée a été d'affecter une variable quelconque dans la boucle while, puis de tester son existence...

Poste le Monday 2 March 2009 16:28:16
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
condition non réalisée
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons