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 15/12/2006, à 16:20

benichoukkke

petit soucis dans un case

bonjour a tous,
j'ai un petit soucis dans une case, dans un script shell

#!/bin/bash
case $1 in
        [a-z]) echo "pte lettre ";;
        [A-Z]) echo "gde lettre ";;
        [0-9]) echo "chiffre ";;
        *) echo "type innatendu :) $1 ";;
esac

ne fonctionne pas correctement puisque si j'apelle mon fichier ac par exmeple D en parametre il me retourne que c'est un pte lettre...

par contre

#!/bin/bash

case $1 in
        [[:lower:]]) echo "pte lettre";;
        [[:upper:]]) echo "gde lettre";;
        [[:digit:]]) echo "chiffre";;
        *) echo "heu .... quedale :) ";;
esac

fonctionne très bien smile

voila , d'avance je vous remercie smile

#2 Le 15/12/2006, à 19:49

kaworu

Re : petit soucis dans un case

Salut !
même problème que toi, je crois que c'est à cause de l'UTF-8 car avec les locales POSIX ça marche correctement :

#!/bin/bash
# foo.sh
while [ $1 ]; do
    case $1 in 
        [a-z])  echo "$1 : petite lettre"   ;;
        [A-Z])  echo "$1 : grande lettre"   ;;
        [0-9])  echo "$1 : chiffre"         ;;
        *)      echo "$1 : autre"           ;;
    esac
    shift
done

me donne ça :

alex@gentoo ~ $ echo $LC_ALL
en_US.UTF-8
alex@gentoo ~ $ ./foo.sh 1 a A d D z Z ?
1 : chiffre
a : petite lettre
A : petite lettre
d : petite lettre
D : petite lettre
z : petite lettre
Z : grande lettre
? : autre
alex@gentoo ~ $ LC_ALL=C
alex@gentoo ~ $ ./foo.sh 1 a A d D z Z ?
1 : chiffre
a : petite lettre
A : grande lettre
d : petite lettre
D : grande lettre
z : petite lettre
Z : grande lettre
? : autre

c'est étrange, je me plonge dans la doc de ce pas !

Dernière modification par kaworu (Le 15/12/2006, à 19:50)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne