Salut à tous,
Je souhaite écrire un script sh qui détecte si Python 2 est installé. Voici ce que j’ai pour le moment :
[code]#!/bin/sh
{
# Vérifie que Python est installé
python --version
# Vérifie que c'est bien Python2
[ `python -c 'import sys; print(sys.version_info[0])'` = '2' ]
} || {
echo "Please, install Python 2"
exit 1
}
exit 0[/code]
Ce script me donne le résultat escompté dans tous les cas (Python 2 et 3 installés, Python 3 seulement, ou pas de Python du tout). Le seul souci est que la première ligne (python2 --version) affiche la version de Python sur la sortie d’erreur standard. Oui oui, même quand il n’y a pas d’erreur, la version est affichée sur stderr. Du coup, c’est un peu moche. J’ai souhaité cacher cette sortie en redirigeant l’erreur :
Le script n’affiche plus rien sur la console, mais si python2 n’est pas installé, l’erreur est ignorée et mon script sort avec l’état 0.
J’utilise la solution suivante :
#!/bin/sh
python2 --version 2> /dev/null
if [ $? != 0 ]
then
echo "Please, install Python 2"
exit 1
fi
exit 0
Ça fonctionne très bien, mais je voudrais comprendre pourquoi ma première idée ne fonctionne pas, et comment parvenir à rediriger un message d’erreur sans l’ignorer.
D’avance, merci pour votre aide
Duna