Posez votre question Signaler

[Shell] test opérateur logique OR

Igor012 5Messages postés 21 avril 2004Date d'inscription - Dernière réponse le 11 mai 2009 à 14:11
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
Lire la suite 

[Shell] test opérateur logique OR »

8 réponses
Réponse
+0
moins plus
Salut,

while [ $grp -ne 1 ] || [ $grp -ne 2 ]

Igor012- 14 avril 2007 à 15:40
Salut,
j'ai fait ce que tu m'a dis, y a du mieux. mais maintenant ca tourne en rond

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 "Choissez le groupe auquel il va appartenir : 
        1->  administration
        2->  informatique"
        read grp
        done


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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

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
;-)
jipicy- 14 avril 2007 à 18:34
Hi,

je te l'accorde :-))
Je n'en attendais pas moins de ta part ;-))

PS. J-1
Igor012lami20j - 15 avril 2007 à 02:04
Merci a tous de votre aide :)
Je vous tiens au courant
shmmini - 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
Ajouter un commentaire
Ce document intitulé « [Shell] test opérateur logique OR » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?