Pages : 1
#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
voila , d'avance je vous remercie
#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
Pages : 1