Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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