#1 Le 06/03/2008, à 21:04
- insomniak
Script Bash : savoir si appli installée ou pas
Bonjour à tous,
Je suis en train de me faire un petit script pour backuper mon serveur perso à l'insertion d'un HDD externe.
Pour cela je souhaite prévenir le début et la fin du backup et je vais le faire via la commande "beep".
Malheureusement elle n'est pas installée par défaut, et donc j'aimerai savoir si on peut tester si la commande est installée ? si oui par quel moyen ?
J'ai ma petite idée : il suffirait de tester si le fichier beep existe mais selon la distro le chemin pourrait bouger donc pas très efficace... (je pinaille un peu car ce sera toujours une ubuntu, mais si jamais un jour je change je prefere ne pas me retaper tous les scripts si vous voyez ce que je veux dire ^^)
Sinon deuxieme question : comment sait-on dans un script bash qu'une commande a réussi ou echoué ?
Par exemple, je pense faire mon backup via rsync. J'aimerai tout de meme prevenir en cas d'erreur ou en cas de réussite par des sons différents. Savez vous comment on peut faire ce genre de test ?
Merci par avance
@ bientot
Hors ligne
#2 Le 06/03/2008, à 21:15
- johnlege
Re : Script Bash : savoir si appli installée ou pas
Bonsoir
pour tester le retour d'un script bash, il te faut tester la valeur de $?, si elle est différente de zéro, la commande exécutée a eu une erreur
pour tester la présence d'une commande, tu peux utiliser whereis -b beep, s'il te renvoi le chemin d'accés à la commande, elle existe sinon tu ne peux l'exécuter, mais il te faudra tester si le chemin d'accés a été trouvé par whereis,
Merci d'indiquer résolu dans le titre quand c'est résolu
Hors ligne
#3 Le 06/03/2008, à 21:18
- Sysko le prospecteur
Re : Script Bash : savoir si appli installée ou pas
pour la commande beep , perso je la connais pas , mais je dirais que comme comme toutes les commandes elles se trouvent soit dans /bin soit dans /usr/bin et cela est valable pour toutes les distros linux respectant les normes ( donc quasi toutes ? )
donc il suffit de tester si le fichier beep existe dans l'un de ces répertoires et le tour est joué
ensuite on sait si une commande à reussiré ou échoué au code de retour qu'elle renvoie ( accessible via la valeur de $? , sinon un commande1 && commande2 executera commande2 si commande1 reussit et un commande1 || commande2 executera commande2 si commande1 ehoue , mais tant ton qu'à il faudra plus faire un if sur la valeur $? )
edit : et mince on ma grillé
Dernière modification par Sysko le prospecteur (Le 06/03/2008, à 21:19)
Projet tatoeba : projet collaboratif visant à créer un corpus de phrases d'exemples traduites dans le plus de langues possibles
Hors ligne
#4 Le 12/03/2008, à 18:57
- Alain.g
Re : Script Bash : savoir si appli installée ou pas
On peut également utiliser "which"
Pour tester la présence de plusieurs programmes, tu peux utiliser une fonction avec boucle au début du script bash
Par exemple (plus ou moins bon ) :
#!/bin/bash
presence ()
{
er=`for i in "$@" ; do which "$i">/dev/null || echo "▸ $i" ; done`
if [ ! -z "$er" ] ; then
echo -e "Avant d'utiliser ce script, vous devez installer :\n$er"
exit 1
fi
}
presence beep unaccent ssed
La fonction n'est d'ailleurs pas spécialement utile, ceci revient au même en fait :
#!/bin/bash
er=`for i in beep unaccent ssed
do
which "$i">/dev/null || echo "▸ $i"
done`
if [ ! -z "$er" ] ; then
echo -e "Avant d'utiliser ce script, vous devez installer :\n$er"
exit 1
fi
Dernière modification par Alain.g (Le 12/03/2008, à 19:17)
Xubuntu Karmic !
Hors ligne
#5 Le 13/03/2008, à 16:16
- Saito
Re : Script Bash : savoir si appli installée ou pas
Salut,
ou tout simplement:
for i in beep sed ssed Perle
do
which "$i" &>/dev/null || prog_a_installer+=" $i"
done
if [[ ! -z "$prog_a_installer" ]]; then
echo -e "Avant d'utiliser ce script, vous devez installer :\n$prog_a_installer"
exit 1
fi
sans utiliser de backquotes.
Aku-Soku-Zan_Shinsengumi
Hors ligne