logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres [08/07/2014 19:01]
Hypathie [Caractères et syntaxe de transformation de paramètres]
doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres [01/10/2023 11:37] (Version actuelle)
captnfab
Ligne 3: Ligne 3:
   * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux.   * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux.
   * Niveau requis : {{tag>​débutant avisé}}   * Niveau requis : {{tag>​débutant avisé}}
 +  * Commentaires : FIXME
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>​à-placer}} ​ +  * Suivi :   
-    * Création par [[user>​Hypathie]] 08/​04/​2014 +    * Création par [[user>​Hypathie]] ​le 08/​04/​2014 
-    * Testé par Hypathie en Avril 2014 +    * Testé par [[user>Hypathie]] en Avril 2014 
-  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=87499#p87499 ​| ici]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))+  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=140921#p140921 ​| ici]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
 +**Nota :** Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
  
-  * [[atelier:​chantier:​bash-les-differents-caracteres-speciaux|Vision d'​ensemble]] 
-  * [[atelier:​chantier:​la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] 
-  * [[atelier:​chantier:​la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]] 
-  * [[atelier:​chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] 
-  * [[atelier:​chantier:​page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Les symboles dans les calculs]] 
-  * [[atelier:​chantier:​page-man-bash-v-les-tableaux|Les tableaux]] 
-  * [[atelier:​chantier:​bash-vii-globs-etendus-regex|Globs étendus et regex]] 
  
 +  * [[doc:​programmation:​shells:​bash-les-differents-caracteres-speciaux|Vision d'​ensemble]]
 +  * [[doc:​programmation:​shells:​la-page-man-bash-les-caracteres-speciaux|Détail et caractères]]
 +  * [[doc:​programmation:​shells:​la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]]
 +  * [[doc:​programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]]
 +  * [[doc:​programmation:​shells:​page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Les symboles dans les calculs]]
 +  * [[doc:​programmation:​shells:​page-man-bash-v-les-tableaux|Les tableaux]]
 +  * ;-)
 +  * [[doc:​programmation:​shells:​bash-vii-globs-etendus-regex|Bash : Variables, globs étendus, ERb, ERe]]
  
 +**Nota : Dans cette page l'​expression "​caractère générique"​ est employée dans le sens de métacaractère,​ glob ou pattern(([[doc:​programmation:​shells:​bash-les-differents-caracteres-speciaux#​definition-usuelle-de-metacaractere-et-detail]])).**
 =====Caractères et syntaxe de transformation de paramètres===== =====Caractères et syntaxe de transformation de paramètres=====
 On peut substituer des variables ou paramètres définis(es) précédemment par l'​utilisateur dans un script, et cela permet d'en transformer le contenu. Cela permet aussi de donner une valeur à une variable déclarée mais nulle. On peut substituer des variables ou paramètres définis(es) précédemment par l'​utilisateur dans un script, et cela permet d'en transformer le contenu. Cela permet aussi de donner une valeur à une variable déclarée mais nulle.
-<​nowiki>​ 
- 
- 
-</​nowiki>​ 
  
 ^Syntaxe de substitution ^Significations ^ ^Syntaxe de substitution ^Significations ^
Ligne 43: Ligne 43:
 <note tip> <note tip>
 Certaines substitutions de paramètre recoupent les fonctionnalités de la commande expr.\\ ​ Certaines substitutions de paramètre recoupent les fonctionnalités de la commande expr.\\ ​
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 #!/bin/bash #!/bin/bash
Ligne 58: Ligne 58:
 </​note>​ </​note>​
 ===Substitution de paramètres par référence indirecte=== ===Substitution de paramètres par référence indirecte===
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 72: Ligne 72:
  
 ===Substitution par modification=== ===Substitution par modification===
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 84: Ligne 84:
 ===Substitution d'un paramètre non-déclaré ou de valeur nulle=== ===Substitution d'un paramètre non-déclaré ou de valeur nulle===
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 98: Ligne 98:
  
 ===Attribution d'une valeur par défaut=== ===Attribution d'une valeur par défaut===
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 echo ${nom_utilasateur=`whoami`} # attribution d'une valeur par défaut, rien n'a été déclaré echo ${nom_utilasateur=`whoami`} # attribution d'une valeur par défaut, rien n'a été déclaré
Ligne 108: Ligne 108:
 moi moi
 </​code>​ </​code>​
-  * **ou  ​encore :** +  * Ou  ​encore : 
 <note tip> <note tip>
 Attention : l'​indice du premier caractère d'une chaîne de caractères est 0. Attention : l'​indice du premier caractère d'une chaîne de caractères est 0.
 </​note>​ </​note>​
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 echo "​J'​aime les chats" echo "​J'​aime les chats"
Ligne 126: Ligne 126:
  
 ===Extraction de sous-chaîne contenu dans la valeur de la variable ${paramètre:​début:​longueur}=== ===Extraction de sous-chaîne contenu dans la valeur de la variable ${paramètre:​début:​longueur}===
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 158: Ligne 158:
  
 ===Substitution de la valeur d'une variable (ou d'un paramètre) par la longueur de sa chaîne ${#​paramètre}=== ===Substitution de la valeur d'une variable (ou d'un paramètre) par la longueur de sa chaîne ${#​paramètre}===
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 172: Ligne 172:
  
 ===Suppression de la plus courte chaîne ${paramètre#​modèle}=== ===Suppression de la plus courte chaîne ${paramètre#​modèle}===
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 184: Ligne 184:
 ===Suppression de la plus longue chaîne $paramètre##​modèle}=== ===Suppression de la plus longue chaîne $paramètre##​modèle}===
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 196: Ligne 196:
 ===Modifier un paramètre en supprimant ses derniers caractères=== ===Modifier un paramètre en supprimant ses derniers caractères===
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 206: Ligne 206:
 </​code>​ </​code>​
  
-  * ou encore ​ :+  * Ou encore ​ :
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 221: Ligne 221:
  
 Toutes les occurrences du motif sont remplacées par la chaîne. Toutes les occurrences du motif sont remplacées par la chaîne.
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 250: Ligne 250:
   * Quand il s'agit de ne changer que la première occurrence, on peut choisir de changer la première ou la dernière :   * Quand il s'agit de ne changer que la première occurrence, on peut choisir de changer la première ou la dernière :
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 275: Ligne 275:
  
   * Par exemple :   * Par exemple :
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 298: Ligne 298:
 s/​motif/​chaîne  ​ s/​motif/​chaîne  ​
 </​code>​ </​code>​
-Cette confusion vient souvent de la ressemblance de la syntaxe <code>​var/​.../​... ou var//​.../​...</​codede la substitution de paramètres ​du shell bash, avec celle des expressions rationnelles ​mentionnées ​ci-dessus.\\  + 
-Elle est renforcée aussi par la ressemblance des globs * ? [ - ] de bash certains caractères ​que l'on retrouve dans les expressions rationnelles.\\ ​+Cette confusion vient souvent de la ressemblance de la syntaxe ​''​<nowiki>​var/​.../​...</​nowiki>'' ​ou ''<​nowiki>​var//​.../​...</​nowiki>''​ que l'on utilise pour la substitution de paramètres,​ avec celle des expressions rationnelles ​(voir la note ci-dessous).\\  
 + 
 +Elle est renforcée aussi par la ressemblance des globs '' ​'',​ '' ​'',​ ''<​nowiki>​[ - ]</​nowiki>''​ ainsi que par certains caractères ​utilisés avec les expressions rationnelles .\\ 
  
 <note tip> <note tip>
-Attention donc, s'il est possible d'​utiliser ​" ​" ​ " ​" ​et "[  -  ]" ​dans les modifications de chaînes d'un paramètre que nous venons de voir, il n'est pas possible d'​utiliser les expressions rationnelles directement.\\ ​+Attention donc, s'il est possible d'​utiliser ​'' ​''​ , '' ​'' ​et ''<​nowiki>​[  -  ]</​nowiki>'' ​dans les modifications de chaînes d'un paramètre que nous venons de voir, il n'est pas possible d'​utiliser les expressions rationnelles directement.\\ ​
  
 Avec le shell Bash on utilise les //​expressions rationnelles//​ au moyen de commandes externes qui elles les utilisent, comme grep, sed, awk, vi (par exemple : set -o vi).\\ ​ Avec le shell Bash on utilise les //​expressions rationnelles//​ au moyen de commandes externes qui elles les utilisent, comme grep, sed, awk, vi (par exemple : set -o vi).\\ ​
-Voir : [[atelier:chantier:bash-les-differents-caracteres-speciaux?&#l-operateur-de-correspondance-d-une-expression-rationnelle-dans-une-expression-de-tests]].+Voir : [[doc:programmation:​shells:bash-vii-globs-etendus-regex?#correspondance-de-motifs-avec-les-expressions-rationnelles]].
  
 On n'​utilise pas de //ER// pour ce qui concerne les substitutions de paramètres abordés ici, mais il est possible d'​utiliser les caractères génériques basiques (pattern ou glob), ainsi que "les génériques de class" <​nowiki>​[[:​class:​]]</​nowiki>​ au moyen de sa commande interne "​shopt",​ munie de l'​option extglob. On n'​utilise pas de //ER// pour ce qui concerne les substitutions de paramètres abordés ici, mais il est possible d'​utiliser les caractères génériques basiques (pattern ou glob), ainsi que "les génériques de class" <​nowiki>​[[:​class:​]]</​nowiki>​ au moyen de sa commande interne "​shopt",​ munie de l'​option extglob.
Ligne 311: Ligne 313:
  
 ==== Utilisation du caractère génériques " ? ". ==== ==== Utilisation du caractère génériques " ? ". ====
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 var=debian123456facile var=debian123456facile
Ligne 328: Ligne 330:
 .................. ..................
 </​code>​ </​code>​
-====4) Utilisation du caractère générique " * ". === +==== Utilisation du caractère générique "​*"​. === 
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 set -o posix set -o posix
Ligne 363: Ligne 365:
  
 ====Utilisation des brackets [ - ] ==== ====Utilisation des brackets [ - ] ====
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 v=debian123456facile v=debian123456facile
Ligne 393: Ligne 395:
  
 ====Modifier la case : caractères {...^...}, {...^^...}, {...,...}, {...,,​...}==== ====Modifier la case : caractères {...^...}, {...^^...}, {...,...}, {...,,​...}====
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 var="​je vais apprendre à utiliser le shell."​ var="​je vais apprendre à utiliser le shell."​
Ligne 415: Ligne 417:
 </​code>​ </​code>​
  
-====commande shopt -s extglob et braquet de classe [ [:class:] ]===+====commande shopt -s extglob et braquet de classe ​<​nowiki>​[ [:class:] ]</​nowiki>​===
 <​code>​([[:​lower:​]])</​code>​ <​code>​([[:​lower:​]])</​code>​
 Elle désigne une suite de caractères minuscules : on peut retirer la première occurrence, ou toutes les occurrences à des caractères. Elle désigne une suite de caractères minuscules : on peut retirer la première occurrence, ou toutes les occurrences à des caractères.
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 shopt -s extglob shopt -s extglob
Ligne 442: Ligne 444:
 <​code>​([[:​digit:​]])</​code>​ <​code>​([[:​digit:​]])</​code>​
 Exemples Exemples
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 shopt -s extglob shopt -s extglob
Ligne 461: Ligne 463:
 </​code>​ </​code>​
 ====Négation de caractères [^...] et [!...] ; extraction de symboles [.SYMBOL.]==== ====Négation de caractères [^...] et [!...] ; extraction de symboles [.SYMBOL.]====
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 shopt -s extglob shopt -s extglob
Ligne 491: Ligne 493:
  
 <note tip> <note tip>
-  ​* Remarque sur la syntaxe ​: +Donc : 
-<code> +  ​* Remarque sur les syntaxes ​''​<nowiki> $var/​.../​... ​</​nowiki>''​ et ''<​nowiki> ​$var//​.../​... </nowiki>''​. 
-$var/​.../​... +
-ou +
-$var//​.../​... +
-</code>+
   * Attention de ne pas confondre les globs étendus et les expressions régulières   * Attention de ne pas confondre les globs étendus et les expressions régulières
 Avec shopt -s extglob : Avec shopt -s extglob :
-  - On peut utiliser les globs simples (  * ? [ ]  ) et les globs étendus [ | ? @ ! +  ^] +  - On peut utiliser les globs simples (  ​''​*''​ , ''​?''​ , ''<​nowiki>​[ ]</​nowiki>'' ​ ) et les globs étendus ​: ''<​nowiki>​]</​nowiki>'',​ ''<​nowiki>​|</​nowiki>'',​ ''​?'', ​ ''​@'',​ ''​!'',​ ''​+'', ​ '' ​''​ 
-  - MAIS on ne peut pas utiliser les EXPRESSIONS RÉGULIÈRES ​(où les globs étendus sont "​ré-utilisés"​ avec une syntaxe différente,​ à côté d'​autres caractères : la distinction entre globs étendus et ER est développée [[atelier:chantier:​bash-vii-globs-etendus-regex|ici]] ).\\ + 
 +  - Mais on ne peut pas utiliser les expressions régulières ​(où les globs étendus sont "​ré-utilisés"​ avec une syntaxe différente,​ à côté d'​autres caractères : la distinction entre globs étendus et //ER// est développée [[doc:​programmation:shells:​bash-vii-globs-etendus-regex|ici]] ).\\ 
 À voir aussi : http://​wiki.bash-hackers.org/​syntax/​pattern\\ À voir aussi : http://​wiki.bash-hackers.org/​syntax/​pattern\\
    
   * Pour les classes de caractères,​ attention à la norme POSIX : [[http://​hyperpolyglot.org/​shell]] ​ :   * Pour les classes de caractères,​ attention à la norme POSIX : [[http://​hyperpolyglot.org/​shell]] ​ :
-NON POXIS : <code>​[[:​nom-classe:​]]</​code>  +Non POXIS : ''​<nowiki>​[[:​nom-classe:​]]</​nowiki>''​\\ 
-POSIX : + 
-<code> +POSIX : ''​<nowiki>​[:​upper:​]</​nowiki>''​ ; ''<​nowiki>​[:​alnum:​]</​nowiki>'',​ etc. 
-[:​upper:​] ​# majuscules  +
-[:​alnum:​] ​# alphanumériques  +
-</code>+
 Une liste plus complète ici : [[doc:​programmation:​shell:​regexp#​les-ensembles-de-caracteres-possibles]]\\ Une liste plus complète ici : [[doc:​programmation:​shell:​regexp#​les-ensembles-de-caracteres-possibles]]\\
 +Voir le wiki suivant : [[doc:​programmation:​shells:​bash-vii-globs-etendus-regex|globs étendus et expressions régulières]]
    
   * Pour les autres options de la commande interne shopt :   * Pour les autres options de la commande interne shopt :
Ligne 517: Ligne 516:
  
 =====tuto précédent : ===== =====tuto précédent : =====
-[[atelier:chantier:​page-man-bash-v-les-tableaux|Bash : les tableaux]]+[[doc:programmation:​shells:​page-man-bash-v-les-tableaux|Bash : les tableaux]]
  
 =====tuto suivant : ===== =====tuto suivant : =====
-[[atelier:chantier:​bash-vii-globs-etendus-regex|Bash : globs étendus et regex]]+[[doc:programmation:​shells:​bash-vii-globs-etendus-regex|Bash : globs étendus et regex]]
  
  
doc/programmation/shells/man-bash-vi-les-caracteres-de-transformation-de-parametres.1404838900.txt.gz · Dernière modification: 08/07/2014 19:01 par Hypathie

Pied de page des forums

Propulsé par FluxBB