[Bash] Pourquoi ma boucle ne marche pas ?
Résolu/Fermé
math_b67
Messages postés
529
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2021
-
8 août 2013 à 17:11
math_b67 Messages postés 529 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 1 juin 2021 - 9 août 2013 à 10:42
math_b67 Messages postés 529 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 1 juin 2021 - 9 août 2013 à 10:42
A voir également:
- [Bash] Pourquoi ma boucle ne marche pas ?
- Minimal bash-like line editing is supported ✓ - Forum Linux / Unix
- Boucle cmd - Forum Programmation
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Retour à la ligne bash ✓ - Forum Shell
7 réponses
Lapourax
Messages postés
3006
Date d'inscription
vendredi 15 mars 2013
Statut
Contributeur
Dernière intervention
17 février 2023
334
8 août 2013 à 17:47
8 août 2013 à 17:47
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
math_b67
Messages postés
529
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2021
69
Modifié par math_b67 le 9/08/2013 à 09:39
Modifié par math_b67 le 9/08/2013 à 09:39
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 ;)
Lapourax
Messages postés
3006
Date d'inscription
vendredi 15 mars 2013
Statut
Contributeur
Dernière intervention
17 février 2023
334
9 août 2013 à 09:49
9 août 2013 à 09:49
ça semble logique maintenant ^^
Bien trouvé math =)
Bien trouvé math =)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
9 août 2013 à 10:41
9 août 2013 à 10:41
On peut se passer des "&&" et réduire l'expression :
;-))
while [ -z "$confirm" ] || [[ "$confirm" = [!on] ]]
;-))
math_b67
Messages postés
529
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2021
69
9 août 2013 à 10:42
9 août 2013 à 10:42
Ok, je ne connaissais pas cette forme, merci :-)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
8 août 2013 à 17:17
8 août 2013 à 17:17
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
math_b67
Messages postés
529
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2021
69
8 août 2013 à 17:20
8 août 2013 à 17:20
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
Messages postés
3006
Date d'inscription
vendredi 15 mars 2013
Statut
Contributeur
Dernière intervention
17 février 2023
334
Modifié par Lapourax le 8/08/2013 à 17:37
Modifié par Lapourax le 8/08/2013 à 17:37
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)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
Modifié par zipe31 le 8/08/2013 à 18:04
Modifié par zipe31 le 8/08/2013 à 18:04
Effectivement dans ma première réponse je n'ai pas regardé le script et j'ai juste répondu à la question pourquoi la boucle était infinie ;-(
math_b67
Messages postés
529
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2021
69
8 août 2013 à 17:43
8 août 2013 à 17:43
@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
math_b67
Messages postés
529
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2021
69
8 août 2013 à 17:55
8 août 2013 à 17:55
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 ;-)
Lapourax
Messages postés
3006
Date d'inscription
vendredi 15 mars 2013
Statut
Contributeur
Dernière intervention
17 février 2023
334
8 août 2013 à 17:57
8 août 2013 à 17:57
Un plaisir ;-)
Je supprime ma première réponse erronée que personne tombe dans le panneau
Je supprime ma première réponse erronée que personne tombe dans le panneau
8 août 2013 à 18:09
9 août 2013 à 09:21
Mon while 1 c'est du C qui revient on dirais ^^
Pas mal des doubles [[ ]] =)