[bash] Vérifier la version des outils dans un script

Vérifier la version des outils dans un script [bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-11-2009 à 15:33:31    

Bonjour,
 
Suite à mes précédents messages (et je remercie au passage les forumers qui m'ont aidés par leur réponse), j'ai encore besoin d'une petite aide:
 
Au débute de mon script je vérifie la présence des outils dont je me sers. Cela fonctionne très bien. Mais j'aimerais augmenter la force de la chose, en contrôlant également la version du logiciel.  
 
Pour ce faire, je voulais  faire  


sed --version | head -1 | awk  '{print $4}'


 
Mais aprés comment vérifie que la version présente est bien celle que je souhaite?


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 27-11-2009 à 15:33:31   

Reply

Marsh Posté le 27-11-2009 à 18:14:05    

#!/bin/bash
SED_VERSION=$(sed --version | head -1 | awk  '{print $4}')
if  [ "${SED_VERSION}" -eq "1.2.3.4" ]
then
echo "C'est la bonne version \o/"
else
echo "C'est pas la bonne version :("
fi


 
Ca renvoie une erreur mais ca fait la comparaison quand même. Il doit pas y avoir grand chose a changer.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 27-11-2009 à 19:22:31    

Citation :

SED_VERSION=$(sed --version | awk  '$3 ~ /version/ {print $4}')


Évitons les pipes inutiles.


---------------
La réponse est 42
Reply

Marsh Posté le 01-12-2009 à 13:20:45    

Désolé pour le retard de ma réponse.
 
Merci à vous deux pour vos réponses. Elles m'aident beaucoup.
 
Cependant, le problème de ce script est qu'il vérifie si une version est installé et non pas si une version minimal est installé. Or, et dans l'absolu, j'aurais voulue la deuxième option, mais j'ai peur que cela rende la chose plus compliqué.


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 01-12-2009 à 17:31:36    

s/-eq/-ge/ ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 02-12-2009 à 09:12:39    

Bonjour,
 
alors j'ai essayé. mais cela pose un problème lors de l'utilisation de la commande -eq (ou -ge) car les variables ne contiennent pas que des chiffres (par ex. 4.1.5).
 
Je peut comparer la valeur de deux chaines , mais, pour l'instant, ne pas savoir si une version minimal est présente.


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 02-12-2009 à 11:11:05    

Remplace "-eq" (equal) par "-ge" (greater or equal) dans mon mini script


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 02-12-2009 à 14:09:37    

Voila le message que j'obtiens :


/usr/bin/test: line 428: [: 4.1.5: integer expression expected
C'est pas la bonne version :(


 
Que ce soit en utilisant -eq ou -ge


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 02-12-2009 à 14:30:10    

#!/bin/bash
SED_VERSION=$(sed --version | head -1 | awk  '{print $4}')
if  [ "${SED_VERSION}"-ge"1.2.3.4" ]
then
echo "C'est la bonne version \o/"
else
echo "C'est pas la bonne version :("
fi


Ca, ça marche.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 02-12-2009 à 14:31:02    

Et pourquoi ne pas passer par la version du package accessible via les commandes CLI du gestionnaire de packages  de ta distribution ?


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 02-12-2009 à 14:31:02   

Reply

Marsh Posté le 02-12-2009 à 14:34:34    

Essaie d'utiliser = , != , < , > pour voir si ça marche, c'est plus adapté aux chaines.
 
[ "1.2.3.4" \< "1.3.4.5" ]
 
http://www.ibm.com/developerworks/ [...] -test.html

Reply

Marsh Posté le 02-12-2009 à 16:29:13    

Merci tuxerman. Ca marche mieux en utilisant les échappements et '>' ou '<'


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 24-12-2009 à 01:04:34    

échappements ?
comparateurs...
 
Je m'échappe...___>[]

Reply

Marsh Posté le 24-12-2009 à 09:31:49    

Sans échappement ça passe pas [:spamafote] , par défaut <> sont utilisés comme redirecteurs dixit l'auteur de l'article que j'ai cité.


Message édité par tuxerman12 le 24-12-2009 à 09:42:50
Reply

Sujets relatifs:

Leave a Replay

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