Existe-t-il un équivalent au IN ?
Bonjour,
imaginez un array qui stocke les valeurs saisies d'un utilisateur sur l'entrée standard. J'attends de l'utilisateur un choix parmi 4 valeurs distinctes. Cet array ne doit donc stocker au maximum que 4 valeurs.
Mais je dois pouvoir tester les erreurs suivantes :
- il ne renseigne rien. Dans ce cas j'utilise
Code:
1 2 3 4 5
|
RET_cube=${#cube[*]}
if [ $RET_cube == 0 ]; then
echo "!!!!!! Veuillez selectionner au moins un cube !!!!!!!\n"
exit; |
Cette première partie fonctionne. :P
- C'est sur le test suivant qu'il plante. Imaginons qu'il renseigne une ou plusieurs valeurs mais qui ne sont pas celles que j'attends. Et c'est la que je ne sais pas faire. Je pensais que
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #Test : l'utilisateur n'a rien renseigné
RET_cube=${#cube[*]}
if [ $RET_cube == 0 ]; then
echo "!!!!!! Veuillez selectionner au moins un cube !!!!!!!\n"
exit;
else
# Test : l'utilisateur a répondu correctement ?
for i in ${cube[@]}; do
if ([ ${cube[@]} == F || E || M || Q ]); then
verif="OK"
echo "le resultat est : $verif"
else
verif="KO"
echo "le resultat est : $verif"
fi
done
fi |
ou (c'est la seule ligne 9 qui change entre les 2 versions)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #Test : l'utilisateur n'a rien renseigné
RET_cube=${#cube[*]}
if [ $RET_cube == 0 ]; then
echo "!!!!!! Veuillez selectionner au moins un cube !!!!!!!\n"
exit;
else
# Test : l'utilisateur a répondu correctement ?
for i in ${cube[@]}; do
if ([ ${cube[@]} == F ] || [ ${cube[@]} == E ] || [ ${cube[@]} == M ] || [ ${cube[@]} == Q ]); then
verif="OK"
echo "le resultat est : $verif"
else
verif="KO"
echo "le resultat est : $verif"
fi
done
fi |
allait fonctionner mais non.... Je me prends des erreur dans la tronche :aie:
Donc connaissez vous un equivalent au "IN" du SQL par exemple qui me permettrait de tester mon array sur ce point et en fonction du resultat lancerait une autre suite de commandes dans la même boucle ?