Intervention user dans une boucle while
Résolu/Fermé
LoossSS
Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
-
3 juin 2008 à 15:47
LoossSS Messages postés 12 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 13 juin 2013 - 4 juin 2008 à 23:24
LoossSS Messages postés 12 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 13 juin 2013 - 4 juin 2008 à 23:24
A voir également:
- Intervention user dans une boucle while
- Factorielle en c boucle while - Forum C
- Boucle excel sans macro - Forum Excel
- User account control - Guide
- User is over quota - Forum Mail
- Boucle cmd - Forum Programmation
7 réponses
j'ai pas compris grand chose a ton truc mais je te donne un exemple de ce que moi je fait :
while true
do
echo "Veuillez faire votre choix :"
echo "apppuyer 1 pour eteindre"
echo "2 pour stop ce machin"
read choix
case $choix in
1) shutdown -h now ;;
2) break ;;
esac
done
while true
do
echo "Veuillez faire votre choix :"
echo "apppuyer 1 pour eteindre"
echo "2 pour stop ce machin"
read choix
case $choix in
1) shutdown -h now ;;
2) break ;;
esac
done
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 juin 2008 à 15:56
3 juin 2008 à 15:56
Salut,
while read ligne do if [ $ligne != cequejeveux ] then echo "Que voulez-vous faire?" echo "1 - ceci..." echo "2 - cela..." read reponse case "$reponse" in 1) cmd... ;; 2) cmd... ;; *) echo "Mauvaise réponse" exit ;; esac fi done < journalPas testé, mais c'est en gros ce que je ferai...
LoossSS
Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
3 juin 2008 à 16:20
3 juin 2008 à 16:20
Merci pour vos réponses :
donc, j'ai testé le case : ça ne marche pas!!!
En fait, j'ai toujours le même problème qu'avant,
il m'écrit bien les choix possibles mais il n'attend pas ma réponse, il passe à la suite....
Voila mon vrai script si ça peut vous aider à mieux comprendre :
# Le but de ce script est de comparer les dates de deux fichiers par rapport au journal et de copier le plus récent sur l'autre...
comparedate $date2 $date_journal2 # Fonction comparedate déjà définit et qui marche très bien
if [ $? -eq 1 ] # comparedate ressort 1 si le fichier à la même date que le journal, 2 si la date est plus récente
then
cp --preserve=mode $chemin1 $chemin2
echo "Le fichier $chemin2 a été remplacé par $chemin1"
else
echo "Les fichiers $chemin1 et $chemin2 ont des dates différentes du journal"
echo "Lequel souhaitez-vous conserver?"
echo "Tapez : 1 pour $chemin1 2 pour $chemin2"
read reponse
case "$reponse" in
1) cp --preserve=mode $chemin1 $chemin2
echo "Le fichier $chemin2 a été remplacé par $chemin1 ;;
2) cp --preserve=mode $chemin2 $chemin1
echo "Le fichier $chemin1 a été remplacé par $chemin2 ;;
esac
fi
Bon courage...
donc, j'ai testé le case : ça ne marche pas!!!
En fait, j'ai toujours le même problème qu'avant,
il m'écrit bien les choix possibles mais il n'attend pas ma réponse, il passe à la suite....
Voila mon vrai script si ça peut vous aider à mieux comprendre :
# Le but de ce script est de comparer les dates de deux fichiers par rapport au journal et de copier le plus récent sur l'autre...
comparedate $date2 $date_journal2 # Fonction comparedate déjà définit et qui marche très bien
if [ $? -eq 1 ] # comparedate ressort 1 si le fichier à la même date que le journal, 2 si la date est plus récente
then
cp --preserve=mode $chemin1 $chemin2
echo "Le fichier $chemin2 a été remplacé par $chemin1"
else
echo "Les fichiers $chemin1 et $chemin2 ont des dates différentes du journal"
echo "Lequel souhaitez-vous conserver?"
echo "Tapez : 1 pour $chemin1 2 pour $chemin2"
read reponse
case "$reponse" in
1) cp --preserve=mode $chemin1 $chemin2
echo "Le fichier $chemin2 a été remplacé par $chemin1 ;;
2) cp --preserve=mode $chemin2 $chemin1
echo "Le fichier $chemin1 a été remplacé par $chemin2 ;;
esac
fi
Bon courage...
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 juin 2008 à 17:24
3 juin 2008 à 17:24
Oups j'avais complètement oublié que 2 instructions "read" dans la même boucle (while) merdoient quelque peu ;-((
De plus je ne me rappelle plus s'il y a une façon de contourner la chose ou pas ;-\
Quoi qu'il en soit, il suffit de remplacer la boucle "while" par une boucle "for" en modifiant la valeur de la variable "$IFS" en entrée :
De plus je ne me rappelle plus s'il y a une façon de contourner la chose ou pas ;-\
Quoi qu'il en soit, il suffit de remplacer la boucle "while" par une boucle "for" en modifiant la valeur de la variable "$IFS" en entrée :
jp@ubuntu:~/trash $ cat fich AA BB CA DD EA jp@ubuntu:~/trash $ cat foo.sh #! /bin/bash IFS=$'\n' for line in $(cat fich) do grep "A" <<<${line} if [ "$?" -eq 0 ] then echo "${line}" else echo "La ligne ne contient pas de A..." echo "Voulez-vous afficher la ligne (O/N) ?" read choix case "${choix}" in O|o) echo "${line}" ;; N|n) echo "xxx" ;; *) echo Erreur ;; esac fi done jp@ubuntu:~/trash $ ./foo.sh AA AA La ligne ne contient pas de A... Voulez-vous afficher la ligne (O/N) ? O BB CA CA La ligne ne contient pas de A... Voulez-vous afficher la ligne (O/N) ? n xxx EA EA jp@ubuntu:~/trash $;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 juin 2008 à 20:32
3 juin 2008 à 20:32
Oups -(((
Pour éviter l'echo du "grep", modifier la ligne en :
Pour éviter l'echo du "grep", modifier la ligne en :
grep "A" <<<${line} >/dev/null;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LoossSS
Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
4 juin 2008 à 19:47
4 juin 2008 à 19:47
Avec un peu de recul, je récapitule la situation parce que le problème n'est pas résolu !! (et en plus mon problème a évolué...)
J'ai un fichier avec des données.
Je souhaite faire intervenir l'utiliateur sur chaque ligne de ce fichier.
J'ai deux choix :
==> boucle while : le fichier est pris ligne par ligne MAIS l'utilisateur ne peux pas intervenir ....
==> boucle for : l'utilisateur peut intervenir MAIS le fichier est pris mot par mot et non pas ligne par ligne ....
Y a-t-il un moyen de concilier les deux ??? C'est à dire le fichier est pris ligne par ligne et l'utilisateur peut intervenir !!
MERCI !!!!!
J'ai un fichier avec des données.
Je souhaite faire intervenir l'utiliateur sur chaque ligne de ce fichier.
J'ai deux choix :
==> boucle while : le fichier est pris ligne par ligne MAIS l'utilisateur ne peux pas intervenir ....
==> boucle for : l'utilisateur peut intervenir MAIS le fichier est pris mot par mot et non pas ligne par ligne ....
Y a-t-il un moyen de concilier les deux ??? C'est à dire le fichier est pris ligne par ligne et l'utilisateur peut intervenir !!
MERCI !!!!!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 juin 2008 à 20:11
4 juin 2008 à 20:11
Je te l'ai expliqué dans mon post avec l'exemple de la boucle "for" :
Quoi qu'il en soit, il suffit de remplacer la boucle "while" par une boucle "for" en modifiant la valeur de la variable "$IFS" en entrée !!!
Donc ajuste la valeur de la variable $IFS en début de script comme dans mon exemple et ça devrait rouler...
Quoi qu'il en soit, il suffit de remplacer la boucle "while" par une boucle "for" en modifiant la valeur de la variable "$IFS" en entrée !!!
Donc ajuste la valeur de la variable $IFS en début de script comme dans mon exemple et ça devrait rouler...
[test]$ cat fich AA il fait beau BB il pleut CA il neige DD ça souffle EA c'est bientôt l'été [test]$ cat foo.sh #! /bin/bash IFS=$'\n' for line in $(cat fich) do grep "A" <<<${line} >/dev/null if [ "$?" -eq 0 ] then echo "${line}" else echo "La ligne ne contient pas de A..." echo "Voulez-vous afficher la ligne (O/N) ?" read choix case "${choix}" in O|o) echo "${line}" ;; N|n) echo "xxx" ;; *) echo Erreur ;; esac fi done [test]$ ./foo.sh AA il fait beau La ligne ne contient pas de A... Voulez-vous afficher la ligne (O/N) ? o BB il pleut CA il neige La ligne ne contient pas de A... Voulez-vous afficher la ligne (O/N) ? N xxx EA c'est bientôt l'été [test]$;-))
LoossSS
Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
4 juin 2008 à 21:49
4 juin 2008 à 21:49
Je suis d'accord. ça marche !!
Mais si je modifie la variable IFS au début, dans ce cas, ça pose des problèmes avec mes variables d'entrée (ou alors c'est moi qui m'y prend mal... ???)
En tout cas, merci pour ta patience........... ;-)
Mais si je modifie la variable IFS au début, dans ce cas, ça pose des problèmes avec mes variables d'entrée (ou alors c'est moi qui m'y prend mal... ???)
En tout cas, merci pour ta patience........... ;-)
LoossSS
Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
4 juin 2008 à 23:24
4 juin 2008 à 23:24
Merci !!!
Je suis un boulet !! lol ;-)
Tout marche très bien avec ta méthode.....
Je suis un boulet !! lol ;-)
Tout marche très bien avec ta méthode.....