[Bash] Pourquoi ma boucle ne marche pas ?
Résolu
math_b67
Messages postés
604
Statut
Membre
-
math_b67 Messages postés 604 Statut Membre -
math_b67 Messages postés 604 Statut Membre -
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
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Bash addition - Forum Shell
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
7 réponses
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
@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 ;-)
#! /bin/bash while : do echo "\nConfirmer la suppression du repo : $repo (o/n) : " read confirm if [[ $confirm = "o" ]] || [[ $confirm = "n" ]] || [[ -z "${confirm}" ]] then break fi doneMon while 1 c'est du C qui revient on dirais ^^
Pas mal des doubles [[ ]] =)