Script shell unix

Résolu/Fermé
simo - 11 août 2008 à 13:39
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 13 août 2008 à 10:43
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.
A voir également:

21 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
13 août 2008 à 10:43
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
$
;-))
0