pb scipt shell comparer un argument a une valeur dan un fichier

pb scipt shell comparer un argument a une valeur dan un fichier - Shell/Batch - Programmation

Marsh Posté le 20-01-2007 à 21:46:55    

Bonjour a tous. Voila je suuis en ecole d'info et jai un script a faire.
Voila mon code :  
 
 put_in_db()
{
ky=`cut -d" " -f2 sh.db | grep -w "$2"`
 
if [ $# -eq 3 ]
    then
    if [ "$1" = "put" ]
        then
        echo "$1 $2 $3" >> sh.db
    elif [ "$2" = "$ky" -a  "$1" = "put" ]     #===========> apartir de la ca deconne la comparaison "$2" = "$ky" ne marche pas. Mais pourquoi donc???? je ne sais pas.
        then
        echo "je doi ecraser la valeur (arg3 du prog)" >> sh.db    
    fi
fi
}
 
Le prog pren en parametre:  
   ./prog put key value
il ecrit donc put key value dans le fichier sh.db
ensuite si je fai :
./prog put key1 value1  
et la kan je fait un cat de sh.db il maffiche bien :
 put key value
 put key1 value1
LE PROBLEME ARRIVE ICI:
si je retape  
./put key value  
 il doi ecraser la valeur de la clef
dans le fichier on aura donc:
put key
put key1 vallue1
 
Merci de me repondre!!!

Reply

Marsh Posté le 20-01-2007 à 21:46:55   

Reply

Marsh Posté le 21-01-2007 à 21:50:40    

drexlbob a écrit :

Bonjour a tous. Voila je suuis en ecole d'info et jai un script a faire.
Voila mon code :  
 
 put_in_db()
{
ky=`cut -d" " -f2 sh.db | grep -w "$2"`
 
if [ $# -eq 3 ]
    then
    if [ "$1" = "put" ]
        then
        echo "$1 $2 $3" >> sh.db
    elif [ "$2" = "$ky" -a  "$1" = "put" ]     #===========> apartir de la ca deconne la comparaison "$2" = "$ky" ne marche pas. Mais pourquoi donc???? je ne sais pas.
        then
        echo "je doi ecraser la valeur (arg3 du prog)" >> sh.db    
    fi
fi
}
 
Le prog pren en parametre:  
   ./prog put key value
il ecrit donc put key value dans le fichier sh.db
ensuite si je fai :
./prog put key1 value1  
et la kan je fait un cat de sh.db il maffiche bien :
 put key value
 put key1 value1
LE PROBLEME ARRIVE ICI:
si je retape  
./put key value  
 il doi ecraser la valeur de la clef
dans le fichier on aura donc:
put key
put key1 vallue1
 
Merci de me repondre!!!


 
Bon alors 2 choses
1) poster 2 fois la même question dans deux topics différents c'est franchement nul
2) faire aussi peu d'effort sur l'orthographe ne donne absolument pas envie de t'aider
 
Sinon la procédure sous unix pour modifier une valeur dans un fichier est généralement celle-ci
1) recopier tout ce qui est avant la valeur à modifier dans un second fichier
2) écrire la nouvelle valeur à la suite du second fichier
3) recopier tout ce qui est après la valeur à modifier dans le second fichier
4) renommer le second fichier à la place du premier
 
Toi, tout ce que tu fais, c'est de rajouter des lignes dans le fichier "sh.db" !!!


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

Marsh Posté le 22-01-2007 à 12:13:52    

Tu as un problème de logique dans ta fonction.
 
La condition dans ton elif ne sera jamais vérifiée :

  • Si $1 est égal à put, on restera au niveau de la clause then du second if
  • Dans le cas contraire, on teste bien la condition dans le elif mais elle ne peut pas être vérifiée car $1 n'est pas égal à put.


 
Jean-Pierre.

Reply

Marsh Posté le 22-01-2007 à 14:09:42    

aigles a écrit :

Tu as un problème de logique dans ta fonction.
 
La condition dans ton elif ne sera jamais vérifiée :

  • Si $1 est égal à put, on restera au niveau de la clause then du second if
  • Dans le cas contraire, on teste bien la condition dans le elif mais elle ne peut pas être vérifiée car $1 n'est pas égal à put.


 
Jean-Pierre.


Comment ai-je pu rater ça !!!  :??:  
Joliment bien vu !!! :wahoo:


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

Marsh Posté le 25-01-2007 à 15:41:28    

OK je vous remercie ca marche !!!

Reply

Sujets relatifs:

Leave a Replay

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