Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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 wink

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... hmm

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