Script shell unix
Résolu
simo
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Mon problème est comme suit: J'ai un prompt invitant l'utilisateur à faire son choix parmi plusieurs choix lus à partir d'un fichier, je voudrai limiter le choix de l'utilisateur à seulement et seulement deux choix et récupérer en paramètres les choix choisis.
Exemple :
1. Couleur : verte Code : 1
2. Couleur : jaune Code : 2
3. Couleur : rouge Code : 3
Votre choix :
Les paramètres (verte, 1) et (jaune, 2) et (rouge,3) représente lors de l'affichage les paramètres $2 et $4.
Si l'utilisateur choisit les options 1 et 3 un tableau tab[i] devrait se remplir avec les paramètres (verte,1,rouge,3)
Le choix doit se limiter à deux choix obligatoireemnt : exemple : 1,3 ou 1,2 ou 2,3
Merci d'avance pour votre aide.
Mon problème est comme suit: J'ai un prompt invitant l'utilisateur à faire son choix parmi plusieurs choix lus à partir d'un fichier, je voudrai limiter le choix de l'utilisateur à seulement et seulement deux choix et récupérer en paramètres les choix choisis.
Exemple :
1. Couleur : verte Code : 1
2. Couleur : jaune Code : 2
3. Couleur : rouge Code : 3
Votre choix :
Les paramètres (verte, 1) et (jaune, 2) et (rouge,3) représente lors de l'affichage les paramètres $2 et $4.
Si l'utilisateur choisit les options 1 et 3 un tableau tab[i] devrait se remplir avec les paramètres (verte,1,rouge,3)
Le choix doit se limiter à deux choix obligatoireemnt : exemple : 1,3 ou 1,2 ou 2,3
Merci d'avance pour votre aide.
A voir également:
- Script shell unix
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
21 réponses
Attention !!! Dans le script ci-dessous, la syntaxe du test entre crochets doit être écrite sans l'espace entre les deux premiers crochets ouvrants. Ici j'y suis obligé à cause de la syntaxe employée par CCM pour l'emploi des doubles crochets ;-((
$ cat couleurs.txt # fichier externe contenant les couleurs et leur code Couleur : verte Code : 1 Couleur : jaune Code : 2 Couleur : rouge Code : 3 $ cat foo.ksh # script en korn shell #! /bin/ksh clear while : do echo "Choisissez une ou 2 valeur(s) maximum\nséparées par une virgule (ex : 1,2)\n" cat -n couleurs.txt echo read choix if [ [ "$choix" = "" ]] then echo "Vous devez choisir au moins une valeur... recommencez s'il vous plaît.\n" continue fi IFS=, set $(echo "$choix") if (( "$#" > 2 )) then echo "Vous ne pouvez choisir que 2 valeurs maximum... recommencez s'il vous plaît.\n" continue fi break done set -A tableau $( for i in "$@" do awk -F" " 'NR=='"$i"' { printf "%s %d ",$3,$6 }' couleurs.txt done) echo "Paramètres du tableau = ${tableau[*]}" $L'exécution :
$ ./foo.ksh Choisissez une ou 2 valeur(s) maximum séparées par une virgule (ex : 1,2) 1 Couleur : verte Code : 1 2 Couleur : jaune Code : 2 3 Couleur : rouge Code : 3 <<<< # Aucune valeur n'est saisie Vous devez choisir au moins une valeur... recommencez s'il vous plaît. Choisissez une ou 2 valeur(s) maximum séparées par une virgule (ex : 1,2) 1 Couleur : verte Code : 1 2 Couleur : jaune Code : 2 3 Couleur : rouge Code : 3 1,3,2 Vous ne pouvez choisir que 2 valeurs maximum... recommencez s'il vous plaît. Choisissez une ou 2 valeur(s) maximum séparées par une virgule (ex : 1,2) 1 Couleur : verte Code : 1 2 Couleur : jaune Code : 2 3 Couleur : rouge Code : 3 3,1 Paramètres du tableau = rouge 3 verte 1 $;-))