Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1698 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] Script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Shell] Script

n°1532278
davidubois
Posté le 22-03-2007 à 16:34:04  profilanswer
 

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
mood
Publicité
Posté le 22-03-2007 à 16:34:04  profilanswer
 

n°1532976
Sve@r
Posté le 23-03-2007 à 19:20:22  profilanswer
 

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.
n°1533109
davidubois
Posté le 24-03-2007 à 10:08:16  profilanswer
 

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 ...

n°1533122
Sve@r
Posté le 24-03-2007 à 11:52:29  profilanswer
 

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.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] Script

 

Sujets relatifs
Shell aide sur mon scriptScript shell (sql)
Pb [SCRIPT SHELL] Help!!!Plugin script shell pour eclipse?
Script shell : lecture dans un fichier et mise en formeSocket en script shell
[Shell] Petit probleme avec un script[Shell / C] Script shell en tant que démon ?
[script shell] grep -f sur de grandes quanités de donnéesRedirection type shell avec script perl cgi
Plus de sujets relatifs à : [Shell] Script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR