Bonjour à tous...
Voilà, je gère des numéros de versions d'une application.
Au cours d'un lancement d'application, j'ai besoin de comparer le numéro actuelle de la version de l'appli avec le numéro de la version d'un client, enfin bref, je veux comparer en fait deux flottant vu que la version est de la forme: x.y (x et y étant des entiers).
La comparaison doit se faire dans un script shell.
Alors moi, je suis parti tête la première en programmant un truc du style:
Je teste mon programme avec VERSION_APPLI valant 3.1 et VERSION_CLIENT valant 4.0 (j'ai bien vérifié en faisant des echo) et le programme rentre quand même dans la conditionnelle or il ne devrait pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if [ $VERSION_APPLI > $VERSION_CLIENT ] then echo "je fais le bon traitement ici" fi
J'ai cherché un peu à droite à gauche et j'ai vu que y'avait la notion de comparaison de chaine et de numérique.
J'ai donc essayé en remplaçant le symbole '>' par '-gt' mais ça, ça marche que pour les entiers.
Donc mon souci, comment faire pour que ça marche avec du flottant?
J'ai bien eu une idée, c'est de multiplier les numéro de version et de comparer avec '-gt' mais ça marche pas non plus.
Par exemple, si j'exécute:
ça me retourne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 echo $(( $VERSION_APPLI*10 ))
comme si mon shell n'était pas capable de gérer les flottants... quelqu'un a une idée???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ./shVoxDb: line 113: 3.1*10 : syntax error in expression (error token is ".1*10 ")
Merci d'avance!
Partager