[SHELL/BASH] probleme boucle
Résolu/Fermé
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
-
17 juin 2009 à 10:19
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 - 17 juin 2009 à 15:11
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 - 17 juin 2009 à 15:11
A voir également:
- [SHELL/BASH] probleme boucle
- Classic shell windows 11 - Télécharger - Personnalisation
- Minimal bash-like line editing is supported ✓ - Forum Linux / Unix
- Shell pause ✓ - Forum Shell
- Boucle cmd - Forum Programmation
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
20 réponses
FlorianWebmastering
Messages postés
237
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
19 juin 2009
20
17 juin 2009 à 10:25
17 juin 2009 à 10:25
if ($vChoix > 2) then echo "Erreur, choix incorrect ( 1 ou 2 )"
elseif echo "Entrez votre choix : "
read vChoix
Quelque chose comme ça
elseif echo "Entrez votre choix : "
read vChoix
Quelque chose comme ça
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
17 juin 2009 à 10:37
17 juin 2009 à 10:37
Salut,
#! /bin/sh #set -xv while : do echo "Entrez votre choix [1-2] : " read choix if [ "$choix" -gt 2 ] then echo "Erreur, choix incorrect ( 1 ou 2 )" continue else echo "Choix \"$choix\" correct." break fi done;-))
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 10:53
17 juin 2009 à 10:53
Merci,
Pour vos réponses .
jipicy : a quoi correspond la ligne commentée #set -xv ?
et -gt ? c'est l'equivalent de >= ?
Cordialement Madmat59
Pour vos réponses .
jipicy : a quoi correspond la ligne commentée #set -xv ?
et -gt ? c'est l'equivalent de >= ?
Cordialement Madmat59
FlorianWebmastering
Messages postés
237
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
19 juin 2009
20
17 juin 2009 à 10:54
17 juin 2009 à 10:54
-gt signifie greater than - plus grand que. Donc >
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 10:58
17 juin 2009 à 10:58
Ok 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
17 juin 2009 à 10:59
17 juin 2009 à 10:59
Le "#set -xv" est un paramètre que je mets toujours dans mes scripts (voir man bash et la commande set), en fait là il est commenté mais si on le décommente ça permet de d'exécuter le script en mode verbeux et ainsi voir les erreurs éventuelle, surtout au niveau de l'interprétation des variables.
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 11:09
17 juin 2009 à 11:09
il me trouve des erreurs avec la solution :
if [ $vChoix > 2 ]
then
echo "Erreur, choix incorrect ( 1 ou 2 )"
else
echo "Entrez votre choix : "
read $vChoix
fi
resultat :
1.Ajouter un serveur Windows
2.Ajouter un serveur Linux
Entrez votre choix :
1
Erreur, choix incorrect ( 1 ou 2 )
if [ $vChoix > 2 ]
then
echo "Erreur, choix incorrect ( 1 ou 2 )"
else
echo "Entrez votre choix : "
read $vChoix
fi
resultat :
1.Ajouter un serveur Windows
2.Ajouter un serveur Linux
Entrez votre choix :
1
Erreur, choix incorrect ( 1 ou 2 )
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
17 juin 2009 à 11:12
17 juin 2009 à 11:12
if [ $vChoix -gt 2 ]
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 11:14
17 juin 2009 à 11:14
Merci jipicy, ta solution fonctionne à merveille !
while :
do
echo "Entrez votre choix [1-2] : "
read vChoix
if [ "$vChoix" -gt 2 ]
then
echo "Erreur, choix incorrect ( 1 ou 2 )"
continue
else
echo "Choix \"$vChoix\" correct."
break
fi
done
Par contre je ne comprend pas pourquoi on ne met pas d'argument à WHILE, je ne savais même pas que c'etait possible
cordialement Madmat59
while :
do
echo "Entrez votre choix [1-2] : "
read vChoix
if [ "$vChoix" -gt 2 ]
then
echo "Erreur, choix incorrect ( 1 ou 2 )"
continue
else
echo "Choix \"$vChoix\" correct."
break
fi
done
Par contre je ne comprend pas pourquoi on ne met pas d'argument à WHILE, je ne savais même pas que c'etait possible
cordialement Madmat59
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
17 juin 2009 à 11:19
17 juin 2009 à 11:19
Si il y a un argument le ":" (deux points) équivalent de "true" (on aurait pu écrire "while true").
Tant que la condition est vraie on boucle.
Si le choix est supérieur à 2 on "continue", sinon on sort (break)...
Tant que la condition est vraie on boucle.
Si le choix est supérieur à 2 on "continue", sinon on sort (break)...
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 11:22
17 juin 2009 à 11:22
Merci bien pour toutes ces explications, je comprends maintenant :D
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 11:56
17 juin 2009 à 11:56
J'ai encore un probleme sur un "if",
j'ai fais :
if [ $vChoix = 1 ] then
read -p 'Nom de la machine Windows : ' vNom
...
else (donc vChoix=2)
read -p 'Nom de la machine Linux :' vNom
...
fi
Entrez votre choix [1-2] :
1
Choix "1" correct.
./essai.sh: line 76: syntax error near unexpected token `else'
./essai.sh: line 76: `else'
J'ai toujours ce message d'erreur
j'ai fais :
if [ $vChoix = 1 ] then
read -p 'Nom de la machine Windows : ' vNom
...
else (donc vChoix=2)
read -p 'Nom de la machine Linux :' vNom
...
fi
Entrez votre choix [1-2] :
1
Choix "1" correct.
./essai.sh: line 76: syntax error near unexpected token `else'
./essai.sh: line 76: `else'
J'ai toujours ce message d'erreur
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 12:01
17 juin 2009 à 12:01
J'ai trouvé mon problème le "then" ne doit pas se trouver sur la même ligne que le "if"
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
17 juin 2009 à 12:04
17 juin 2009 à 12:04
Ou séparer les deux avec un point virgule (;) :
if [ ... ];then ...
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 12:53
17 juin 2009 à 12:53
Merci pour ces précisions !
Est il possible d'éditer les fichiers à un certain endroit, je voudrais par exemple ajouter une ligne en plein milieu à côté de "define".
J'arrive à ajouter des commandes à la fin avec :
echo texte >> dd.cfg
mais je n'arrive pas à insérer à un certain endroit !
Cordialement Madmat59
Est il possible d'éditer les fichiers à un certain endroit, je voudrais par exemple ajouter une ligne en plein milieu à côté de "define".
J'arrive à ajouter des commandes à la fin avec :
echo texte >> dd.cfg
mais je n'arrive pas à insérer à un certain endroit !
Cordialement Madmat59
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
17 juin 2009 à 14:12
17 juin 2009 à 14:12
Voir du côté de la commande "sed" :
Sed - Insertion de texte
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
Sed - Insertion de texte
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 14:34
17 juin 2009 à 14:34
Merci je vais regarder !
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 14:54
17 juin 2009 à 14:54
J'ai trouvé ce qu'il me faut, il m'affiche bien le changement après execution de la commande. Cependant cette modification ne s'enregistre pas
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
17 juin 2009 à 14:57
17 juin 2009 à 14:57
Quelle commande tapes-tu ?
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 15:00
17 juin 2009 à 15:00
Je fais un test sur un fichier txt
salut
au revoir
je voudrais ajouter mon texte à droite de au revoir : sed "/au revoir/i bye" texte2.txt
La il m'affiche le texte une ligne avant mais le changement ne s'enregistre pas !
salut
au revoir
je voudrais ajouter mon texte à droite de au revoir : sed "/au revoir/i bye" texte2.txt
La il m'affiche le texte une ligne avant mais le changement ne s'enregistre pas !
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
17 juin 2009 à 15:07
17 juin 2009 à 15:07
ssh$ cat fichier salut au revoir ssh$ sed 's/au revoir/& bye/' fichier salut au revoir bye ssh$ cat fichier salut au revoir ssh$ sed -i 's/au revoir/& bye/' fichier ssh$ cat fichier salut au revoir bye ssh$;-))
Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
17 juin 2009 à 15:11
17 juin 2009 à 15:11
Merci beaucoup ! :-)