Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:bash-vii-globs-etendus-regex [31/05/2014 12:27] Hypathie [INDEX] |
doc:programmation:shells:bash-vii-globs-etendus-regex [03/06/2014 14:40] Hypathie [Correspondance de motifs avec les expressions rationnelles] |
||
---|---|---|---|
Ligne 274: | Ligne 274: | ||
</note> | </note> | ||
- | ====4) Utilisation de la variable $BASH_REMATCH==== | + | ====4) un petit script pour s'exercer au ER==== |
+ | **Voici un petit script "exp.reg1" qui regroupe les notions étudiées jusqu'à présent.**\\ | ||
+ | Il a pour but de s'exercer aux expressions régulières.\\ | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | #Les "echo" les plus à droite sont là pour expliquer lors du retour ce qui s'y passe dans ce script. | ||
+ | |||
+ | VAR="$1" | ||
+ | echo "La valeur de VAR est: $VAR." | ||
+ | echo "Il y a "$#" paramètres." | ||
+ | echo "Le paramètre n°1 est "$1" (la 'ER')." | ||
+ | echo "Le paramètre n°2 est "$2" (deuxième argument, chaine1 à matcher)." | ||
+ | echo "Le paramètre n°2 est "$3" (le troisième argument, chaine2 à matcher." | ||
+ | echo " " | ||
+ | shift | ||
+ | echo "Avec 'shift', on se décale d'un paramètre." | ||
+ | echo "Après 'shift', il reste donc: "$#" paramètre(s)." | ||
+ | echo "Et ce(s) paramètre(s) sont: "$1", "$2"." | ||
+ | echo "("$1": ancien deuxième paramètre devenu paramètre 1 après shift)." | ||
+ | echo "("$2": ancien troisième paramètre devenu paramètre 2 après shift.)" | ||
+ | echo " " | ||
+ | echo "MAIS LA VALEUR DE VAR RESTE la 'ER' : "$VAR"." | ||
+ | for i in "$@" | ||
+ | do | ||
+ | echo " " | ||
+ | echo "'for i in \$@': la variable i aura, boucle après boucle, les VALEURS: "$@"," | ||
+ | echo "(attribués à chaque tour de boucle à variable "i".)" | ||
+ | echo "c'est-à-dire lors de la boucle n°1, elle est identique au paramètre n°1: "$1"." | ||
+ | echo "puis lors de la boule n°2, elle est identique au paramètre n°2 : "$2"." | ||
+ | echo " " | ||
+ | echo "On peut donc donner à grep la chaine:$i comme entrée par le tube," | ||
+ | echo "et comme motif le 'ER': $VAR." | ||
+ | echo "$i" | grep -E "$VAR" > /dev/null | ||
+ | if [ $? -eq 0 ] | ||
+ | then | ||
+ | echo " " | ||
+ | echo " BRAVO ! La ER: $VAR correspond au motif "$i" " | ||
+ | else | ||
+ | echo " " | ||
+ | echo " ERREUR ! La ER: $VAR ne correspond pas au motif: $i " | ||
+ | echo " " | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | # ligne 33 (if) : $? (code de retour) -eq (égal à) zéro (pas d'erreur de sortie, donc bonne correspondance) | ||
+ | </code> | ||
+ | |||
+ | **Lancez-le ainsi (explications détaillées dans le retour) :**\\ | ||
+ | (en considérant que le dossier parent de ce script figure dans $PATH, après modification du fichier ~/.bashrc\\ | ||
+ | voir : [[atelier:chantier:debuter-avec-les-scripts-shell-bash#executer-son-script-depuis-n-importe-ou|3) Exécuter son script depuis n'importe où !]]) | ||
+ | <code user> | ||
+ | exp.reg1 "^[a-b]" "abc" "ABC" # ER comme premier argument et le ou les chaînes à vérifier en second, troisième, etc. | ||
+ | </code> | ||
- | FIXME | ||
=====INDEX ===== | =====INDEX ===== | ||
====1) rappel des principaux caractères des expressions rationnelles ==== | ====1) rappel des principaux caractères des expressions rationnelles ==== |