#1 Le 31/03/2010, à 09:14
- jackx
[Résolu] if then else : script pas tres beau
Bonjour,
J'ai un script débutant sur lequel j'ai 3 questions.
Le script fonctionne mais il n'est pas beau.
J'ai appelé le script interface.sh
Dans le script il s'agit :
1/ d'avoir un "questionnaire" qui en fonction de la réponse (1, 2, 3, etc.) lance une commande (exemple : echo)
2/ que ce script ne s'arrête jamais.
Question 1 : J'ai utilisé if, then, else, etc.. A la fin j'ai plusieurs "fi" et j'ai l'impression que c'est pas terrible. Quelqu'un peut m'aider pour que ce soit plus joli ;-)
Question 2 : Comme je veux avoir toujours cette interface ouverte, à la fin de "if then else", je relance le script .
Il doit y avoir un code pour reprendre au début ??
Question 3: rajouter un message si le choix est "4", du type : "mauvais choix, ben alors, t'es pas réveillé ?"
Merci d'avance si vous avez le temps de me guider.
Amicalement
Jack
########
choix=0
echo "1. Start apache"
echo "2. Stop apache"
echo "3. bonjour"
echo -n "Choisir une option :"
read choix
if [ $choix -eq 1 ] ;
then
sudo /etc/init.d/apache2 start
else
if [ $choix -eq 2 ] ;
then
sudo /etc/init.d/apache2 stop
if [ $choix -eq 3 ] ;
then
echo "Bravo"
else
echo "Tu as choisis de stopper Apache"
fi
fi
fi
./interface.sh
edit modo : merci d'utiliser les balises [code]
Dernière modification par nesthib (Le 31/03/2010, à 20:24)
Hors ligne
#2 Le 31/03/2010, à 09:50
- serged
Re : [Résolu] if then else : script pas tres beau
Plusieurs solutions :
- utiliser des if then elif ...
if [ $choix -eq 1 ] ;
then
sudo /etc/init.d/apache2 start
elif [ $choix -eq 2 ] ;
then
sudo /etc/init.d/apache2 stop
elif [ $choix -eq 3 ] ;
then
echo "Bravo"
else
echo "Tu as choisis de stopper Apache"
fi
- Utiliser un case :
case "$choix" in
"1")
sudo /etc/init.d/apache2 start
"2")
sudo /etc/init.d/apache2 stop
"3")
echo "Bravo"
*)
echo "Tu as choisis de stopper Apache"
esac
(syntaxe à vérifier, car tapé "au débotté")
Dernière modification par serged (Le 31/03/2010, à 09:51)
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#3 Le 31/03/2010, à 09:55
- iuchiban
Re : [Résolu] if then else : script pas tres beau
Salut,
Effectivement, le case est tout indiqué pour gérer un choix parmi plusieurs. (d'ailleurs, il ne faut pas oublier les ;; à la fin de chaque case)
Pour lancer en boucle, utilise un while
choix=0
while true
do
clear
echo "1. Start apache"
echo "2. Stop apache"
echo "3. Quitter"
echo -n "Choisir une option :"
read choix
case "$choix" in
"1")
sudo /etc/init.d/apache2 start
;;
"2")
sudo /etc/init.d/apache2 stop
;;
"3")
exit 0
;;
*)
echo "Tu as choisis de stopper Apache"
;;
esac
done
Tu fais une boucle infinie de laquelle tu sors en sélectionnant l'option 3.
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne
#4 Le 31/03/2010, à 10:06
- jackx
Re : [Résolu] if then else : script pas tres beau
Merci, c'est très sympa. ça fonctionne parfaitement et c'est "joli" ;-)
Juste pour un autre débutant comme moi si il/elle passe par là: sans la boucle, la fonction "case" va fonctionner comme ça (il faut rajouter les ";;" et la variable avec le questionnaire au départ).
##
choix=0
echo "1. Start apache"
echo "2. Stop apache"
echo "3. Quitter"
echo -n "Choisir une option :"
read choix
case "$choix" in
"1")
sudo /etc/init.d/apache2 start
;;
"2")
sudo /etc/init.d/apache2 stop
;;
"3")
echo "Bravo"
;;
*)
echo "Tu as choisis de stopper Apache"
;;
esac
Dernière modification par nesthib (Le 31/03/2010, à 20:27)
Hors ligne
#5 Le 31/03/2010, à 10:08
- Totor
Re : [Résolu] if then else : script pas tres beau
Bonjour,
#!/bin/bash
PS3='Choisir une option : '
select choix in "Start apache" "Stop apache" "Quitter"
do
case "${REPLY}" in
1) sudo /etc/init.d/apache2 start;;
2) sudo /etc/init.d/apache2 stop;;
3) break;;
esac
done
-- Lucid Lynx --
Hors ligne
#6 Le 31/03/2010, à 13:52
- hardball
Re : [Résolu] if then else : script pas tres beau
merci totor, j'ai appris une nouvelle chose aujourd'hui
-- Toshiba satelliteA100-335 + Ubuntu Jaunty --
Pour les noobs : Bienvenue ! ici la perséverance vous récompense.
Pour les anciens : Merci à vous de partager votre savoir.
Et vive le perl !
Hors ligne