[Shell] test opérateur logique OR
Fermé
Igor012
Messages postés
7
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
15 avril 2007
-
14 avril 2007 à 12:08
Gein- Messages postés 8 Date d'inscription lundi 31 octobre 2011 Statut Membre Dernière intervention 3 novembre 2013 - 3 nov. 2013 à 15:48
Gein- Messages postés 8 Date d'inscription lundi 31 octobre 2011 Statut Membre Dernière intervention 3 novembre 2013 - 3 nov. 2013 à 15:48
A voir également:
- Or shell
- Or - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Pub l'or mannequin - Forum Cinéma / Télé
- Couleur or photoshop ✓ - Forum Webmastering
- Reboot and select proper boot device or insert boot media in selected boot device and press a key - Forum Windows
3 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
14 avril 2007 à 15:26
14 avril 2007 à 15:26
Salut,
while [ $grp -ne 1 ] || [ $grp -ne 2 ]
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
14 avril 2007 à 16:09
14 avril 2007 à 16:09
esssaie comme ça
#!/bin/bash grp="oui" echo -e "Saisissez le login de l'utilsateur : \c" read login echo -e "Saisissez un mot de passe : \c" read pass echo -e "Saissiez le nom complet de l'utilisateur : \c" read nom while true do case $grp in '1' ) echo administration ;; '2' ) echo informatique ;; esac echo "Choissez le groupe auquel il va appartenir [ fin pour quitter ] : " echo "1-> administration" echo "2-> informatique" read grp if [ $grp = "fin" ];then break fi done
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
14 avril 2007 à 17:22
14 avril 2007 à 17:22
Salut,
Ou pour rester dans ce que tu as déjà écrit :
Ou pour rester dans ce que tu as déjà écrit :
echo "Saisissez le login de l'utilsateur" read login echo "Saisissez un mot de passe" read pass echo "Saissiez le nom complet de l'utilisateur" read nom while [ "$grp" -ne "1" ] || [ "$grp" -ne "2" ] do echo -e "Choissez le groupe auquel il va appartenir : 1-> administration 2-> informatique" read grp if [ "$grp" = "1" -o "$grp" = "2" ] then break fi done;-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
14 avril 2007 à 18:27
14 avril 2007 à 18:27
Salut,
Ou pour rester dans ce que tu as déjà écrit :
je te l'accorde :-))
Ou pour rester dans ce que tu as déjà écrit :
je te l'accorde :-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
14 avril 2007 à 18:34
14 avril 2007 à 18:34
Hi,
je te l'accorde :-))
Je n'en attendais pas moins de ta part ;-))
PS. J-1
je te l'accorde :-))
Je n'en attendais pas moins de ta part ;-))
PS. J-1
Igor012
Messages postés
7
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
15 avril 2007
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
15 avril 2007 à 02:04
15 avril 2007 à 02:04
Merci a tous de votre aide :)
Je vous tiens au courant
Je vous tiens au courant
shmmini
>
Igor012
Messages postés
7
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
15 avril 2007
11 mai 2009 à 14:11
11 mai 2009 à 14:11
bonjour,
je sais que ça fait deux ans que tu as posté mais je me permets quand même de te répondre.
il me semble que ça tourne en rond à cause de ton test logique dans la condition de ton while. il te faut un and pas un or dans ton test.
quelque soit la valeur que tu entres, l'une des deux parties de la condition est vérifié ( si tu mets autre chose que 1 et 2 alors les deux sont vérifiées, si tu mets 1 alors la premièrec est vraie et donc le or l'est aussi et ça boucle, et pareil si tu mets 2).
salutations
je sais que ça fait deux ans que tu as posté mais je me permets quand même de te répondre.
il me semble que ça tourne en rond à cause de ton test logique dans la condition de ton while. il te faut un and pas un or dans ton test.
quelque soit la valeur que tu entres, l'une des deux parties de la condition est vérifié ( si tu mets autre chose que 1 et 2 alors les deux sont vérifiées, si tu mets 1 alors la premièrec est vraie et donc le or l'est aussi et ça boucle, et pareil si tu mets 2).
salutations
Gein-
Messages postés
8
Date d'inscription
lundi 31 octobre 2011
Statut
Membre
Dernière intervention
3 novembre 2013
Modifié par Gein- le 3/11/2013 à 15:55
Modifié par Gein- le 3/11/2013 à 15:55
J'approuve le commentaire de shmmini.
En pseudo-code :
tant que $grp différent de 1 ET de 2 ; choisir grp ; fin tant que
En BASH (avec un -o comme demandé) :
while [ $grp -ne 1 -o $grp -ne 2 ]; do read grp; done
Et comme l'auteur l'a fait, il faut bien initialiser la variable grp à 0 (ou autre nombre) sous peine d'erreur
En pseudo-code :
tant que $grp différent de 1 ET de 2 ; choisir grp ; fin tant que
En BASH (avec un -o comme demandé) :
while [ $grp -ne 1 -o $grp -ne 2 ]; do read grp; done
Et comme l'auteur l'a fait, il faut bien initialiser la variable grp à 0 (ou autre nombre) sous peine d'erreur
14 avril 2007 à 15:40
j'ai fait ce que tu m'a dis, y a du mieux. mais maintenant ca tourne en rond
apres ca il y a un case selon le choix 1 ou 2.
ps: les variables dont $grp ont été initialisées au début a 0