[Shell] Script

Script [Shell] - Shell/Batch - Programmation

Marsh Posté le 22-03-2007 à 16:34:04    

Bonjour,
 
Cela fait une dizaine d'années que je n'ai pas mis les mains dans le camboui...
 
J'ai un script à corriger car il ne fonctionne pas :-s
 
Ce script doit recherche un n° de tél dans un fichier csv (;) à partir d'une liste de n° contenu dans un fichier input.
 
Le script est le suivant :

#!/bin/bash
#set -x
 
clear
echo "--------------------------------"
echo "Verification des retours "
echo "--------------------------------"
 
dddd="ZZ"
 
echo "" > output
 
cat input | while read nd
do
  dddd=`grep $nd /data/hvme/infiles/dracco/archive/*.dat | cut -c69-70 | grep "00"`
 echo " retour : $nd " $dddd
 if [ "$dddd" == "00" ]
 then
  echo $nd $dddd  
  echo "update mmc_lignes set l_conf_dracco='00' where l_ligne='"$nd"' and l_acti='1';" >> output  
  dddd=""
 else
  dddd=""
 fi  
done

A votre avis où sont les erreurs ?
 
J'ai essayé

dddd=`grep ${nd} /data/hvme/infiles/dracco/archive/*.dat | cut -c69-70 | grep "00"`

mais l'ajout d'{} n'a rien changé...
 
A+DDD

Message cité 1 fois
Message édité par davidubois le 24-03-2007 à 10:02:46
Reply

Marsh Posté le 22-03-2007 à 16:34:04   

Reply

Marsh Posté le 23-03-2007 à 19:20:22    

davidubois a écrit :

Bonjour,
 
Cela fait une dizaine que je n'ai pas mis les mains dans le camboui...


Une dizaine de quoi ? de jours ? de minutes ?? d'années ???
 

davidubois a écrit :

J'ai un script à corriger car il ne fonctionne pas :-s
 
Ce script doit recherche un n° de tél dans un fichier csv (;) à partir d'une liste de n° contenu dans un fichier input.
 
Le script est le suivant :

#!/bin/bash
#set -x
 
clear
echo "--------------------------------"
echo "Verification des retours "
echo "--------------------------------"
 
dddd="ZZ"
 
echo "" > output
 
cat input | while read nd
do
  dddd=`grep $nd /data/hvme/infiles/dracco/archive/*.dat | cut -c69-70 | grep "00"`
 echo " retour : $nd " $dddd
 if [ "$dddd" == "00" ]
 then
  echo $nd $dddd  
  echo "update mmc_lignes set l_conf_dracco='00' where l_ligne='"$nd"' and l_acti='1';" >> output  
  dddd=""
 else
  dddd=""
 fi  
done

A votre avis où sont les erreurs ?


 
Quel est ton problème ? Ta variable "dddd" (j'adore l'intelligence de tes noms de variables, c'est un vrai régal pour comprendre de quoi il s'agit) n'est pas remplie ???
Sans connaitre la structure de ton CSV (un exemple serait le bienvenue) on aura du mal à t'aider. Déjà je n'arrive même pas à comprendre pourquoi tu fais à l'issue de ton grep un "grep 00" ???
 
Sinon il y a quand-même des trucs à améliorer
1) echo "" > output peut s'écrire plus simplement "> output" ou même "rm -f output"
2) dddd="ZZ" totalement inutile. De même ton double dddd="" que tu as écrit dans le then et dans le else (alors qu'en le mettant après le "fi" tu ne l'aurais écrit qu'une fois) est inutile...
3)
 dddd=`grep machintruc | truc |chose |grep "00"`
if [ dddd = "00" ]
=> Un peu de réflexion: Que peut contenir "dddd" ? Apparemment il contient "00" si le grep trouve. Mais s'il ne trouve pas, je présume qu'il ne contiendra rien
Donc pour résumer, soit "dddd" contient "00" soit il est vide => autant tester tout simplement qu'il n'est pas vide !!!
 

davidubois a écrit :

J'ai essayé

dddd=`grep ${nd} /data/hvme/infiles/dracco/archive/*.dat | cut -c69-70 | grep "00"`

mais l'ajout d'{} n'a rien changé...


Les accolades ne sont utiles que s'il risque d'y avoir confusion. Exemple, t'as une variable "prix=10" et tu veux afficher le prix suivi d'un "F" (comme Franc). Si tu fais echo "$prixF" => le shell cherchera à afficher la variable "prixF" qui n'existe pas => solution: les accolades autour de ta variable => echo "${prix}F"
Les accolades servent aussi pour modifier la façon dont sont gérées les variables
${dddd:-perdu} te donnera "perdu" si "dddd" est vide ou non défini.
En dehors de ces cas, mettre des accolades ne change rien.


Message édité par Sve@r le 23-03-2007 à 19:22:35

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 24-03-2007 à 10:08:16    

Merci pour votre réponse...
Ce script n'est pas de moi :-s
Je prends ce qu'on me donne et j'essaie de faire dans les délais impartis...
J'ai donc tout effacé et recommencé de zéro comme d'had ( faire et défaire c'est du chiffre d'affaire )...
Merci de votre patience...
Je vais faire plus attention ...

Reply

Marsh Posté le 24-03-2007 à 11:52:29    

davidubois a écrit :

J'ai donc tout effacé et recommencé de zéro comme d'had ( faire et défaire c'est du chiffre d'affaire )...


Tu veux sans doute dire "faire et défaire c'est toujours travailler"...
Bon... pour un truc aussi trivial (rechercher une info dans un fichier) recommencer de zéro n'est pas vraiment très difficile ni pénalisant. Mais si on n'a pas la structure de ton CSV, on pourra pas t'aider...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed