pb de script

Le
alban
je voudrais tester la saisie d'une variable et en cas de majuscule refaire
saisire, je penser a ca mais ca ne marche pas

read x
while [ 'echo $x |grep '.*([A-Z])'' = "" ];
do
echo le nom du nouvel utilisateur doit etre minuscules exclusivement
read x

done
--
oui je sais
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sebastien Kirche
Le #1061227
On 4 May 2004, alban wrote:

je voudrais tester la saisie d'une variable et en cas de majuscule refaire
saisire, je penser a ca mais ca ne marche pas


Pour être «user friendly», ne fais pas ressaisir l'utilisateur mais force
toi même en majuscules ce qui est tapé.

[goudurix:~] seki% echo "azerty" | tr a-z A-Z
AZERTY

«man tr» sera ton ami.

Sébastien Kirche

alban
Le #1061226
Sebastien Kirche wrote:

On 4 May 2004, alban wrote:

je voudrais tester la saisie d'une variable et en cas de majuscule
refaire saisire, je penser a ca mais ca ne marche pas


Pour être «user friendly», ne fais pas ressaisir l'utilisateur mais
force toi même en majuscules ce qui est tapé.

[goudurix:~] seki% echo "azerty" | tr a-z A-Z
AZERTY

«man tr» sera ton ami.

Sébastien Kirche


merci je penser pas a ca c'est impéque

--
oui je sais...


TiChou
Le #1061050
Dans le message *alban* tapota sur f.c.o.l.configuration :

je voudrais tester la saisie d'une variable et en cas de majuscule refaire
saisire, je penser a ca mais ca ne marche pas

read x
while [ 'echo $x |grep '.*([A-Z])'' = "" ];
do
echo le nom du nouvel utilisateur doit etre minuscules
exclusivement
read x

done


Voici deux manières de faire en bash. On interdit seulement les lettres
majuscules :

read -p 'Login name : ' name
while [ "${name%[A-Z]*}" != "$name" ]
do
read -p $'Please only lower case lettersnnLogin name : ' name
done

ou bien on autorise seulement les lettres minuscules et les chiffres :

read -p 'Login name : ' name
while [ -n "${name//[a-z0-9]}" ]
do
read -p $'Please only lower case lettersnnLogin name : ' name
done

Ou en reprenant votre idée d'utiliser grep :

read -p 'Login name : ' name
while echo "$name" | grep -q '[[:upper:]]'
do
read -p $'Please only lower case lettersnnLogin name : ' name
done

On peut aussi utiliser la commande 'expr'. man expr

--
TiChou

alban
Le #1061048
TiChou wrote:

Dans le message *alban* tapota sur f.c.o.l.configuration :

je voudrais tester la saisie d'une variable et en cas de majuscule
refaire saisire, je penser a ca mais ca ne marche pas

read x
while [ 'echo $x |grep '.*([A-Z])'' = "" ];
do
echo le nom du nouvel utilisateur doit etre minuscules
exclusivement
read x

done


Voici deux manières de faire en bash. On interdit seulement les lettres
majuscules :

read -p 'Login name : ' name
while [ "${name%[A-Z]*}" != "$name" ]
do
read -p $'Please only lower case lettersnnLogin name : ' name
done

ou bien on autorise seulement les lettres minuscules et les chiffres :

read -p 'Login name : ' name
while [ -n "${name//[a-z0-9]}" ]
do
read -p $'Please only lower case lettersnnLogin name : ' name
done

Ou en reprenant votre idée d'utiliser grep :

read -p 'Login name : ' name
while echo "$name" | grep -q '[[:upper:]]'
do
read -p $'Please only lower case lettersnnLogin name : ' name
done

On peut aussi utiliser la commande 'expr'. man expr




ok merci
--
oui je sais...


Schott
Le #1518285
On Tue, 04 May 2004 13:30:50 +0200, Sebastien Kirche wrote:

[goudurix:~] seki% echo "azerty" | tr a-z A-Z
AZERTY


en utilisant [:upper:] et [:lower:] c'est encore plus élégant, et ça
fait encore plus "je maîtrise le man tr", non? ;-)

Tshaw
Schott
FLLC canal hystérique

alban
Le #1518284
Schott wrote:

On Tue, 04 May 2004 13:30:50 +0200, Sebastien Kirche wrote:

[goudurix:~] seki% echo "azerty" | tr a-z A-Z
AZERTY


en utilisant [:upper:] et [:lower:] c'est encore plus élégant, et ça
fait encore plus "je maîtrise le man tr", non? ;-)

Tshaw
Schott
FLLC canal hystérique
moi je dis trop tard j'ai scripté c'est fini :p merci quand meme

--
oui je sais...


Sebastien Kirche
Le #1061937
On 4 mai 2004, wrote:

[goudurix:~] seki% echo "azerty" | tr a-z A-Z
AZERTY


en utilisant [:upper:] et [:lower:] c'est encore plus élégant, et ça
fait encore plus "je maîtrise le man tr", non? ;-)


Bof, je ne maîtrise pas vraiment :) (loin de là même)
C'était simplement pour aiguiller vers une autre solution qui me semblait
plus adéquate.

Je donne l'idée, après man fait le reste...

Sébastien Kirche


Publicité
Poster une réponse
Anonyme