#1 Le 17/01/2012, à 15:43
- tiresias
[résolu] [ksh] condition dans une structure case
bonjour à tous,
J'écrit un script dans lequel la variable d'entrée est un entier compris entre 0 et max.
Je teste avec la structure suivante:
case "$1" in
[0,$max]) <instructions>;;
*) echo "erreur argument";;
esac
malheureusement si max>=10 ça foire car cette syntaxe n'est correcte que pour des entiers inférieus à 10....
une idée pour résoudre ce truc?
merci
Dernière modification par tiresias (Le 17/01/2012, à 17:03)
Hors ligne
#2 Le 17/01/2012, à 16:43
- Watael
Re : [résolu] [ksh] condition dans une structure case
salut,
si tu n'as qu'une seule condition, pourquoi utiliser un case ?
case ne sait pas tester les intervalles. enfin, pas comme ça, avec une variable "en dur".
tu devrais rester sur de bons vieux tests arithmétiques.
$ min=5 max=12 var=10; (( var > min && var <=max )) && echo succès || echo échec
succès
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 17/01/2012, à 16:47
- tiresias
Re : [résolu] [ksh] condition dans une structure case
j'ai plusieurs conditions
je n'ai cité que celle-ci pour éviter d'alourdir le post
Hors ligne
#4 Le 17/01/2012, à 16:49
- Watael
Re : [résolu] [ksh] condition dans une structure case
ça ne retire rien à ce que j'ai dit : tu devrais rester sur de bons vieux tests arithmétiques.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 17/01/2012, à 16:55
- tiresias
Re : [résolu] [ksh] condition dans une structure case
il n'y aurais pas une possibilité de ce genre?
case $1 in
$(seq -s'|' 0 10) ) <instructions>;;
<autre_cas> ) <instructions>;;
*) echo "erreur";;
esac
problème: si je remplace 10 par $max ça foire...
edit: ah bah si ça fonctionne....
donc pour résumer:
case $1 in
$(seq -s'|' 0 $max) ) <instructions>;;
<autre_cas> ) <instructions>;;
*) echo "erreur";;
esac
fonctionne
merci ^^
Dernière modification par tiresias (Le 17/01/2012, à 17:00)
Hors ligne