Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#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)


Linux-Mint Rebecca 64 (Cinnamon) sur ASUS F2A55/AMD A8-5600K APU

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

Haut de page ↑