Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2007, 22h19   #1
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Par défaut Problème avec mon script shell case in esac

Coucou

J'ai un petit code:
Code :
1
2
3
4
5
6
7
8
 
echo -n "===> Can you help me please ? (y,n) : "
read answer
case $answer in
            y|Y) echo "Thank you";;
            n|N) echo "Looser";;
            *) echo "Bad choice";;
esac
Si je tape autre chose que y ou n, j'obtiens le message "Bad choice" mais ensuite le script est stoppé ce qui est normal. Vu que je ne me suis jamais penché sur la question. Est-il possible de faire un test en fonction du choix utilisateur surtout s'il tape n'importe quoi ? Tant qu'il ne saisit pas y ou n, il ne passe pas à la question suivante.

Avez-vous des exemples à me proposer ?

Merci
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 22h39   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
une boucle while ?


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /bin/bash
 
ANSWER="NO"
 
while [ $ANSWER != "YES" ]
do
	echo -n "===> Can you help me please ? (y,n) : "
	read answer
	case $answer in
        	    y|Y) echo "Thank you"; ANSWER="YES";;
	            n|N) echo "Looser"; ANSWER="YES";;
        	    *) echo "Bad choice";;
	esac
done
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 22h54   #3
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Ton code fonctionne mais la ligne se répète jusqu'à la bonne réponse. Ce qui peut-être très chiant à la longue surtout lorsque tu sais que tu as encore une vingtaine de questions à te pastiller

J'avais pensé à une fonction que j'appelle pour toutes les questions de mon scripts.

Je vais chercher un peu

J'ai adopté cette présentation:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while :
do
	echo -n "===> Do you want add a new user ? (y/n) : "
	read answer
	case $answer in
		y|Y) 
			adduser
			break
		;;
		n|N)
			break
		;;
		*) 
			echo -e "\t-> You must enter y or n!\n"
		;;
	esac
done
Et merci encore
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h57.


 
 
 
 
Partenaires

Hébergement Web