Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

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".

#1 Le 31/03/2010, à 10:14

[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, à 21:24)

Hors ligne

#2 Le 31/03/2010, à 10:50

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, à 10:51)


Linux-Mint Maya 64 Cinnamon sur Toshiba Satellite P200-1BY. Linux-Mint  Nadia 64 Cinnamon sur Compaq Presario SR5617FR

Hors ligne

#3 Le 31/03/2010, à 10:55

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, à 11:06

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, à 21:27)

Hors ligne

#5 Le 31/03/2010, à 11:08

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, à 14:52

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 ↑