[SHELL] Options de la commande READ ?

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

J'ai un petit soucis avec READ. Enfin, je ne sais pas si c'est avec cette commande ^^ Je m'explique.

J'ai ceci par exemple :

#!/bin/bash 
read -p "Tape ton prénom : " nom 
if [ $nom = RIC ]  
then 
       echo Salut $nom 
else exit 
fi


J'aimerais en fait que le "Read" ne prenne pas en compte la casse. C'est-à-dire, que là, en l'état actuel, si je tape "ric", cela me sort du programme. Si je tape "RIC", cela me dit bien "Salut RIC".

Donc je voudrais que même en tapant "ric" ou "Ric", cela me dise "Salut ric" ou "Salut Ric" ... Possible ?

Merci. :)






Là où flotte le drapeau Comtois, qui que tu sois, tu es chez toi !
"Plains ceux qui ont peur car ils créent leur propre terreur"

5 réponses

Utilisateur anonyme
 
salut,

oui, cela ne dépend pas de la commande read.

il y a une option du shell bash à positionner, et utiliser les double crochets
#!/bin/bash 
read -p "Tape ton prénom : " nom
shopt -s nocasematch
if [[ $nom = ric ]]
then
       echo "Salut $nom"
else
   exit
fi
1
Utilisateur anonyme
 
Bonjour :)

Merci, ça marche parfaitement de cette façon :) C'est une chose à garder, très utile :D
0
Utilisateur anonyme
 
En fait, j'ai une autre question :) Cette commande "shopt" s'utilise de quelle façon ? Obligatoirement après un "Read" ? après cela reste en mémoire ou non ?

Merci

++

EDIT : Exemple ici :

#!/bin/bash 

#début  
read -p "Tape ton nom :" nom 
read -p "Tape ton prénom :" prenom 
clear 

tableau=('ric' 'xxx' 'jean' 'yyy' 'pierre', 'zzz') 

if [ $prenom = ${tableau[0]} ] && [ $nom = ${tableau[1]} ] 
 then  
    echo Bonjour à toi $prenom 
elif [ $prenom = ${tableau[2]} ] && [ $nom = ${tableau[3]} ] 
 then  
    echo Bonjour à toi $prenom 
elif [ $prenom = ${tableau[4]} ] && [ $nom = ${tableau[5]} ] 
 then  
    echo Bonjour à toi $prenom 
else  
    echo Utilisateur inconnu ! && exit 
fi


* Pour ne pas que la casse soit prise en compte partout :)

* Et sinon, y'a pas plus simple que le tableau, si je dois entrer des noms et prénoms plus nombreux ?

++
0
Utilisateur anonyme
 
Pas d'idée ? :)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
oui, elle reste activée, pour la désactiver : shopt -u nocasematch
ou utiliser la variable BASHOPTS, voir man bash
ou utiliser ma méthode au cas par cas #3
oui, le tableau est le meilleur stockage pour une liste de valeurs
0
Utilisateur anonyme
 
Merci pour tes réponses.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

#!/bin/bash 
read -p "Tape ton prénom : " nom 
if [[ ${nom} =~ [Rr][Ii][Cc] ]]  
then 
       echo Salut ${nom} 
else exit 
fi

;-))
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
#!/bin/bash 
read -p "Tape ton prénom : " nom
if [ ${nom,,} = ric ]
then
       echo "Salut $nom"
else
   exit
fi
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

C'est pas bon ça, ni le "^" , ni même le "~" ;-((

the , operator converts matching  uppercase  letters  to  lowercase.

La demande initiale demande : Donc je voudrais que même en tapant "ric" ou "Ric", cela me dise "Salut ric" ou "Salut Ric"
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
Pas compris ! $nom n'est convertit en minscule que pour le test.
$ ./f1 
Tape ton prénom : ric 
Salut ric 
$ ./f1 
Tape ton prénom : RiC 
Salut RiC 
$ ./f1 
Tape ton prénom : RIC 
Salut RIC 
$ ./f1 
Tape ton prénom : riC 
Salut riC 
$  
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Arf, j'étais resté sur son exemple et le nom en majuscule "if [ $nom = RIC ]" ;-((

Sorry ;-\
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
2 ave et 5 pater :-))
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
<ModeDonCamilloON>
Tout de suite Monseigneur, mais ce n'était que quelques bashismes V4 ;-DD
<ModeDonCamilloOFF>
0
Utilisateur anonyme
 
ajoutons, par souci de clarté, que entre crochets simples les guillemets autour des variables sont plus que chaudement recommandés.
alors qu'ils ne sont pas nécessaires entre double crochets.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Merci à tous :D
0