[Shell] test opérateur logique OR
Igor012
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Gein- Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Gein- Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Salut a tous,
je cherche la commande pour faire un OR logique dans :
while test $grp -ne 1 OR 2
Voila le OR ou les || ne sont pas reconnus mais pour -o je ne sais pas ou le placer.
Merci
je cherche la commande pour faire un OR logique dans :
while test $grp -ne 1 OR 2
Voila le OR ou les || ne sont pas reconnus mais pour -o je ne sais pas ou le placer.
Merci
A voir également:
- Or shell
- Or - Guide
- Classic shell - Télécharger - Personnalisation
- Livre d'or hiwit - Forum Webmastering
- X64 or x86 ✓ - Forum Windows
- Classic shell c'est quoi ✓ - Forum Windows 10
3 réponses
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
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;-)
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
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
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