URL: https://linuxfr.org/forums/programmation-shell/posts/comparer-deux-num%C3%A9ros-de-versions Title: Comparer deux numéros de versions Authors: tangrop Date: 2006年12月28日T14:22:14+01:00 Tags: Score: 0 Bonjour, je dispose de deux variables VERSION_CLIENT et VERSION_APPLI contenant des numéros de versions. Je dois comparer ces numéros de versions et cela me pose problème. En effet, la comparaison bash se fait selon l'ordre lexicographique et mes versions sont de la forme: x.yz ou x et y sont des entiers (en gros le majeur et le mineur) et z est une lettre (release) Donc bon, j'avais bien une solution à la base du style: [code] if [[ $VERSION_CLIENT > $VERSION_APPLI ]] then echo "le bon traitement ici" fi [/code] Oui, ça va pas chercher bien loin et effectivement, c'est loin de marcher pour tous les cas... En effet, si le majeur (le x) devient supérieur à 9, on entre dans des problème lors de la comparaison. Si on compare 9.2a et 10.2a, la comparaison lexicographique va voir que 9 est plus grand que 1 et ça va donc foirer. L'idée, c'est de découper le tout selon 3 variable et de les comparer une à une. Donc en gros, avant le '.', ça serait la variable majeure, ensuite avant que une lettre apparaisse (je sais, normalement elle est en deuxième position, après le point mais autant que ça soit évolutif), ça serait la variable mineure, et enfin la lettre serait la release. J'ai voulu utiliser awk et sed pour faire ça, mais j'arrive pas du tout. Je vois pas comment les utiliser et je commence à devenir fou, alors que ça me semble être pas trop trop chaud. Mais je débute vraiment avec ces deux outils, si quelqu'un pouvait me donner une piste... Merci d'avance!