bash, tester si un programme est installé

2012-09-21

Pour tester si un programme est installé, on peut utiliser la commande which de différentes manières.

La première en comptabilisant le nombre de lignes retournées.

if [ $(which sponge | wc -l) -eq 0 ]; then
    echo "Installer le paquet 'moreutils'."
    echo "sudo apt-get install moreutils"
    exit 1
fi

La seconde en utilisant le code de retour de la commande.

if ! which sponge >/dev/null; then
    echo "Installer le paquet 'moreutils'."
    echo "sudo apt-get install moreutils"
    exit 1
fi

La seconde est plus lisible, pas besoin de décrypter.

C’est seulement dommage qu’on ne puisse pas ajouter un paramètre à la commande pour ne pas écrire sur la sortie standard et que l’on soit obligé de rediriger dans /dev/null.

A chacun sa préférence.