[SHELL/BASH] probleme boucle
Résolu
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
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
20 réponses
-
Merci beaucoup ! :-)
-
Modérateur
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$
;-))
-
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 ! -
ModérateurQuelle commande tapes-tu ?
-
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
-
Merci je vais regarder !
-
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-
ModérateurVoir 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
-
-
J'ai trouvé mon problème le "then" ne doit pas se trouver sur la même ligne que le "if"
-
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 -
Merci bien pour toutes ces explications, je comprends maintenant :D
-
ModérateurSi 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)...
-
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 -
Modérateur
if [ $vChoix -gt 2 ]
-
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 ) -
ModérateurLe "#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.
-
Ok merci
-
-gt signifie greater than - plus grand que. Donc >
-
Merci,
Pour vos réponses .
jipicy : a quoi correspond la ligne commentée #set -xv ?
et -gt ? c'est l'equivalent de >= ?
Cordialement Madmat59 -
ModérateurSalut,
#! /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
;-))
-
if ($vChoix > 2) then echo "Erreur, choix incorrect ( 1 ou 2 )"
elseif echo "Entrez votre choix : "
read vChoix
Quelque chose comme ça