Script [Shell] - Shell/Batch - Programmation
Marsh Posté le 23-03-2007 à 19:20:22
davidubois a écrit : Bonjour, |
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
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é
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.
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 ...
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...
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 édité par davidubois le 24-03-2007 à 10:02:46