[Bash] Pourquoi ma boucle ne marche pas ?
Résolu
math_b67
Messages postés
529
Date d'inscription
Statut
Membre
Dernière intervention
-
math_b67 Messages postés 529 Date d'inscription Statut Membre Dernière intervention -
math_b67 Messages postés 529 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerai savoir ce qui ne va pas dans mon while, elle ne me renvoi pas d'erreur mais continue à l'infini, meme quand je met "o" ou "n"...
Je m'arrache les cheveux alors que je suis sur que c'est très simple... Voici le code :
Merci d'avance.
J'aimerai savoir ce qui ne va pas dans mon while, elle ne me renvoi pas d'erreur mais continue à l'infini, meme quand je met "o" ou "n"...
Je m'arrache les cheveux alors que je suis sur que c'est très simple... Voici le code :
while [ -z "$confirm" ] || [ "$confirm" != "n" ] || [ "$confirm" != "o" ] do echo "" read -p "Confirmer la suppression du repo : $repo (o/n) : " confirm done
Merci d'avance.
A voir également:
- [Bash] Pourquoi ma boucle ne marche pas ?
- Bingo bash free - Télécharger - Divers Jeux
- Bash addition - Forum Shell
- Additionner deux réels en shell ✓ - Forum Shell
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
7 réponses
while 1 do echo "\nConfirmer la suppression du repo : $repo (o/n) : " read confirm if [ $confirm = "o" ] || [ $confirm = "y" ] || [ -z $confirm ]; then break fi done
Barbare et moche mais ça doit fonctionner
Bonjour a tous !!
Je planche sur cette boucle depuis 8h ce matin, et vous savez quoi ?! J'ai trouvé la solution !!! Héhé !
La voici :
Eh oui, un p*tain de && m'a fait chier pendant plusieurs heures, mais on l'a matté ce c*n !! Hahah ^^
(Pour résoudre ce problème, je me suis fais un tableau listant toutes les sorties possible de ma condition, c'est une technique que je conseille à tous quand vous avez ce genre de problème, ça permet de voir l'erreur rapidement ;-) )
Encore merci pour votre aide ;)
Je planche sur cette boucle depuis 8h ce matin, et vous savez quoi ?! J'ai trouvé la solution !!! Héhé !
La voici :
while [ -z "$confirm" ] || [ "$confirm" != "n" ] && [ "$confirm" != "o" ]
do
echo ""
read -p "Confirmer la suppression du repo : $repo (o/n) : " confirm
done
Eh oui, un p*tain de && m'a fait chier pendant plusieurs heures, mais on l'a matté ce c*n !! Hahah ^^
(Pour résoudre ce problème, je me suis fais un tableau listant toutes les sorties possible de ma condition, c'est une technique que je conseille à tous quand vous avez ce genre de problème, ça permet de voir l'erreur rapidement ;-) )
Encore merci pour votre aide ;)
Salut,
Parce qu'il faut casser ta boucle ;-))
Parce qu'il faut casser ta boucle ;-))
#! /bin/bash while [ -z "$confirm" ] || [ "$confirm" != "n" ] || [ "$confirm" != "o" ] do echo "" read -p "Confirmer la suppression du repo : $repo (o/n) : " confirm break done
Re salut ;-)
J'avais essayé et il me sort cette erreur :
/bin/ldereposup: ligne 19 : [: -z : opérateur binaire attendu
J'avais essayé et il me sort cette erreur :
/bin/ldereposup: ligne 19 : [: -z : opérateur binaire attendu
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Donc moi j'ai dis de la daube '-_-
zipe dans ton cas la boucle va sortir au premier passage quelle que soit la valeur de $confirm non ?
La vie est un mystère qu'il faut vivre, et non un problème à résoudre. (Gandhi)
zipe dans ton cas la boucle va sortir au premier passage quelle que soit la valeur de $confirm non ?
La vie est un mystère qu'il faut vivre, et non un problème à résoudre. (Gandhi)
@Lapourax : une autre idée ? :-)
@zip : Si je fais cela, ma boucle s'arrête, peu importe la lettre qui est tapée par l'utilisateur donc cela ne me convient pas. Il faut que la boucle s'arrête au moment ou l'utilisateur tape "o" ou "n".
PS : J'aurais peut-etre du poster ce topic sur code-source maintenant que l'on est fusionné non ?... :P
@zip : Si je fais cela, ma boucle s'arrête, peu importe la lettre qui est tapée par l'utilisateur donc cela ne me convient pas. Il faut que la boucle s'arrête au moment ou l'utilisateur tape "o" ou "n".
PS : J'aurais peut-etre du poster ce topic sur code-source maintenant que l'on est fusionné non ?... :P
Avec quelques correctifs ton script fonctionne Lapourax !
Je vais l'utiliser en attendant, mais dès demain je vais quand même replancher sur cette boucle, c'est bizarre qu'elle ne passe pas...
Merci bien, à demain ;-)
while : do echo "" read -p "Confirmer la suppression du repo : $repo (o/n) : " confirm if [ $confirm = "o" ] || [ $confirm = "n" ] || [ -z $confirm ] then break fi done
Je vais l'utiliser en attendant, mais dès demain je vais quand même replancher sur cette boucle, c'est bizarre qu'elle ne passe pas...
Merci bien, à demain ;-)
Mon while 1 c'est du C qui revient on dirais ^^
Pas mal des doubles [[ ]] =)