FORUM Tom's Hardware » Le monde de Linux » Utilisation » comparaison de chaine
 

comparaison de chaine

papupi, Basilic et Pistou Matériel : Cooker2b Le monde de Windows : Hachann Le Bistrot : doktor_doom Achats / Ventes : snurky et 298 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : comparaison de chaine
 
Mais où va t'on??
Plus d'informations

Bonjour,
alors pour poser les bases, je suis novice en linux mais je sais me débrouiller lol
voici mon sushi :
je dois mettre a jour un rpm mais avant ca je dois vérifier la version de celui installé.
ça ca va j'y arrive...
j'ai donc deux variables : VerInst et VerDispo
tout dois se faire en shell et je n'arrive pas a comparer ses deux variables
moi j'ai fait :

if [ $VerInst -lt $VerDispo ]; then .....


mais apparement ca ne fonctionne pas car la version est "1.3C-38".
quelqu'un aurait il une idée?
merki d'avance


Message édité par zeb le 25-10-2007 à 14:05:12

---------------
c'est pour qui? c'est pour bibi
zeb
Plus d'informations

Un novice qui code en bourneshell quand même ;)
 
Comme l'indique la page man de test (les crochets [ ] sont une notation différente de test), les opérateurs de comparaison ne fonctionnent que pour les entiers.
 
Proposition : Réinvente les fonctions max ou min.
Affiche les deux, et utilise sort pour les trier. Ne récupère que le premier (head -1) ou le dernier (tail -1) au choix pour vérifier l'égalité avec celui de ton choix :

( echo $VerInst ; echo $VerDispo ) | sort | head -1


 
Mais attention, ceci ne fait que trier par ordre alphabétique.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Plus d'informations

(Sujet déplacé de Programmation vers Linux)


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Mais où va t'on??
Plus d'informations

merki!!!
donc si j'ai tout compris, si je fait le head -1, il va me sortir la version la plus base??
je teste ça demain et je te dis quoi...


---------------
c'est pour qui? c'est pour bibi
zeb
Plus d'informations

La plus base ?
 
Par principe, fais un man de toutes les commandes proposées.
Tu verras que tu peux faire un sort -r pour inverser l'ordre, etc.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Mais où va t'on??
Plus d'informations

ok je test et te tien informé merki!!


---------------
c'est pour qui? c'est pour bibi
Plus d'informations

A mon avis ce que tu veut faire existe deja. :)

zeb
Plus d'informations

Ah. Une piste ?


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Mais où va t'on??
Plus d'informations

Citation :

A mon avis ce que tu veut faire existe deja


c'est à dire?


---------------
c'est pour qui? c'est pour bibi
Mais où va t'on??
Plus d'informations

Citation :

( echo $VerInst ; echo $VerDispo ) | sort | head -1


salut,
apparement ça ne fonctionne pas, il me retourne une chaine vide  :pt1cable:


---------------
c'est pour qui? c'est pour bibi
Plus d'informations

dsl j'ai dit n'imp, apperemment ca n'existe pas encore :(
Je pensait que la commande rpm pouvait comparé 2 paquets mais j'ai poa trouvé :(

zeb
Plus d'informations

Ah, si c'est ça que tu voulais dire, il y a l'option -U de rpm (pour upgrade). [:spamafote]


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Mais où va t'on??
Plus d'informations

oui l'option -U ferai l'affaire mais mon soucis c'est que ce script pourrai servir pour d'autre mise à jour qui ne font pas appel a des RPM.
le début du script fonctionne mais je suis toujours sur le même problème avec le if
 :cry:


---------------
c'est pour qui? c'est pour bibi
zeb
Plus d'informations

Pourquoi as-tu un problème de if ?
 
Comment ça, ça ne marche pas !!!! Qu'est-ce qui ne marche pas ?

Code :
  1. #!/bin/sh
  2. echo Ca marche 1
  3. echo $VerInst
  4. echo Ca marche 2
  5. echo $VerDispo
  6. echo Ca marche 3
  7. ( echo $VerInst ; echo $VerDispo )
  8. echo Ca marche 4
  9. ( echo $VerInst ; echo $VerDispo ) | sort
  10. echo Ca marche 5
  11. ( echo $VerInst ; echo $VerDispo ) | sort | head -1


 
Euh, et ça aussi :

echo -e "$VerInst\n$VerDispo"| sort | head -1


 

Code :
  1. if [ $VerInst = $VerDispo ]; then
  2.     exit 1
  3. fi
  4. if [ `echo -e "$VerInst\n$VerDispo" | sort | tail -1` = $VerDispo]; then
  5.     ....
  6. fi


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Mais où va t'on??
Plus d'informations

salut  
ça marche enfin!! je ne sais aps ce que j'ai changer mais j'ai réécrit tout le scrpit et ca fonctionne
merci pour ton aide zeb
@+


---------------
c'est pour qui? c'est pour bibi
zeb
Plus d'informations

Merci.
 
Pour tous :

Citation :

sa marche pô :cry:

est une phrase interdite.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

exacte, c'est "ca" et non "sa" :o

zeb
Plus d'informations

Faux, c'est "ça". :o


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Mais où va t'on??
Plus d'informations

ce qui compte c'est le fond pas la forme lol
merci pour tout


---------------
c'est pour qui? c'est pour bibi

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Le monde de Linux » Utilisation » comparaison de chaine
 

Annonces Google
Publicité
Les téléchargements