OVH Cloud OVH Cloud

pb de script

7 réponses
Avatar
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...

7 réponses

Avatar
Sebastien Kirche
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

Avatar
alban
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...


Avatar
TiChou
Dans le message <news:c77ria$1al$,
*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

Avatar
alban
TiChou wrote:

Dans le message <news:c77ria$1al$,
*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...


Avatar
Schott
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

Avatar
alban
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...


Avatar
Sebastien Kirche
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