Rechercher : dans
Par :

[SHELL/BASH] probleme boucle

Dernière réponse le 17 jun 2009 à 15:11:16 Madmat59, le 17 jun 2009 à 10:19:45 
 Signaler ce message aux modérateurs

Bonjour,

J'essaye de réaliser un menu pour mon script écrit en Shell/bash, cependant j'ai un problème avec une boucle :

echo "Entrez votre choix : "
read vChoix

while [ $vChoix > 2 ]
do echo "Erreur, choix incorrect ( 1 ou 2 )"
echo "Entrez votre choix : "
read vChoix
done

Je voudrais dire que tant que vChoix est supérieur à 2 "Erreur...".
il m'affiche toujours l'erreur même si je rentre la valeur 1
???

Pouvez vous m'aider svp ?

Cordialement Madmat59

Configuration: Linux
Epiphany 2.22

Meilleures réponses pour « [SHELL/BASH] probleme boucle » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Guide d'utilisation du Shell pour débutant VoirSHELL BASH - GUIDE D'UTILISATION - Niveau Débutant Introduction Appel aux membres CCM II. C'est quoi le shell ? III. Comment accéder à la ligne de commande IV. Les consoles virtuelles Exemple : Accéder à la console 3 depuis l'interface...
Coloration du shell (bash) VoirPourquoi le faire? Quelles informations peuvent être transmises par les couleurs? Les techniques Technique de tput Pourquoi le faire? En personnalisant la couleur des caractères de l'invite (ou du shell), vous la rendez plus lisible. Si...
Télécharger CDBF Shell VoirCertains fichiers de votre ordinateur sont dans un format appelé DBF. Ce sont généralement des bases de données issues de DBase. Il y a par exemple les fichiers liés à Outlook Express qui sont dans ce format. CDBF Shell est une application vous...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...
Linux - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système...
ADSL - Le dégroupage de la boucle locale VoirIntroduction au dégroupage de la boucle locale On appelle "boucle locale" la partie finale de la ligne téléphonique arrivant à l'abonné. Afin de vous faire profiter de l'internet à haut débit (ADSL), les Fournisseurs d'Accès à Internet (FAI)...

1

FlorianWebmastering, le 17 jun 2009 à 10:25:37

If ($vChoix > 2) then echo "Erreur, choix incorrect ( 1 ou 2 )"
elseif echo "Entrez votre choix : "
read vChoix
Quelque chose comme ça N'hésitez pas à me contacter (message privé ou mail), aide, assistance et développement de site web & d'applications.

Répondre à FlorianWebmastering

2

jipicy, le 17 jun 2009 à 10:37:40

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
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

3

Madmat59, le 17 jun 2009 à 10:53:02

Merci,

Pour vos réponses .

jipicy : a quoi correspond la ligne commentée #set -xv ?

et -gt ? c'est l'equivalent de >= ?

Cordialement Madmat59

Répondre à Madmat59

4

FlorianWebmastering, le 17 jun 2009 à 10:54:12

-gt signifie greater than - plus grand que. Donc > N'hésitez pas à me contacter (message privé ou mail), aide, assistance et développement de site web & d'applications.

Répondre à FlorianWebmastering

5

Madmat59, le 17 jun 2009 à 10:58:17

Ok merci

Répondre à Madmat59

6

jipicy, le 17 jun 2009 à 10:59:17

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.
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

7

Madmat59, le 17 jun 2009 à 11:09:40

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 )

Répondre à Madmat59

8

jipicy, le 17 jun 2009 à 11:12:58

if [ $vChoix -gt 2 ] 
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

9

Madmat59, le 17 jun 2009 à 11:14:54

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

Répondre à Madmat59

10

jipicy, le 17 jun 2009 à 11:19:10

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)...
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

11

Madmat59, le 17 jun 2009 à 11:22:40

Merci bien pour toutes ces explications, je comprends maintenant :D

Répondre à Madmat59

12

Madmat59, le 17 jun 2009 à 11:56:24

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

Répondre à Madmat59

14

Madmat59, le 17 jun 2009 à 12:01:54

J'ai trouvé mon problème le "then" ne doit pas se trouver sur la même ligne que le "if"

Répondre à Madmat59

15

jipicy, le 17 jun 2009 à 12:04:31

Ou séparer les deux avec un point virgule (;) :

if [ ... ];then ...
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

16

Madmat59, le 17 jun 2009 à 12:53:59

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

Répondre à Madmat59

17

jipicy, le 17 jun 2009 à 14:12:40

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
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

18

Madmat59, le 17 jun 2009 à 14:34:54

Merci je vais regarder !

Répondre à Madmat59

19

Madmat59, le 17 jun 2009 à 14:54:16

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

Répondre à Madmat59

20

jipicy, le 17 jun 2009 à 14:57:09

Quelle commande tapes-tu ?
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

21

Madmat59, le 17 jun 2009 à 15:00: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 !

Répondre à Madmat59