Je modifie un script qui se lit dans un email utilisateur. C'est très simple, trop simple. Ceci fonctionne, mais uniquement pour les minuscules @ Exemple.com. Comment puis-je modifier ceci pour supprimer le trailing @ Exemple.com, Case Insensible? P> P>
6 Réponses :
Que diriez-vous d'utiliser SED?
email="$(sed 's|@example\.com$||i' <<<"$email")"
Si vous avez Bash 4:
email=${email%%@*}
Je ne veux pas convertir le courrier électronique en minuscule. quel que soit le cas, je veux préserver
Il convient de noter que ces deux transformeront également toutes les parties de l'adresse en minuscules ...
Peut-être que vous voulez juste cela alors: email = $ {email %% @ *}
oui ça marche. Je choisirais cette réponse, mais vous savez que le débordement de la pile ne vous permettrait même pas de choisir votre propre réponse si vous êtes nouveau.
pour bash 3.2 et plus:
shopt -s nocasematch
email='JoHnDoE@eXaMpLe.CoM'
pattern='^(.*)@example.com$'
[[ $email =~ $pattern ]]
email=${BASH_REMATCH[1]} # result: JoHnDoE
echo -n "Please enter your example.com email address: "
read _email
_email=$(echo $_email | awk 'BEGIN{ FS="@" } {print $1}')
echo $_email
and for transfer email to lower case you can use declare, such asdeclare -l email=$email
Voici encore un autre (bien que un peu long), prenez-y:
email='JoHnDoE@eXaMpLe.CoM'
email=${email%%@[Ee][Xx][Aa][Mm][Pp][Ll][Ee].[Cc][Oo][Mm]}
echo "email is $email"
Utiliser une assemblée insensible à la casse à une expression régulière: Vous pouvez couper une chaîne en fonction de sa longueur (qui n'a de sens que si vous savez que l'utilisateur saisit correctement le domaine. ): p>