Bash Advanced Variable Idiomes pour la gestion de la sensibilité aux cas

Bash Advanced Variable Idiomes pour la gestion de la sensibilité aux cas

Chaque fois que nous travaillons avec des chaînes textuelles, tôt ou tard, la question du cas se présente. Un mot doit-il être entièrement majuscule, entièrement en minuscules, avec une lettre capitalisée au début du mot ou de.

Un idiome est une expression du langage naturel d'une tâche de programmation simple. Par exemple, dans le sommeil 10 commande (qui fera une pause que le terminal travaille pendant dix secondes), le mot dormir est une expression du langage naturel de ce qui est une construction de codage basée sur le temps, développée dans le package logiciel Bash GNU Coreutils.

Il existe un certain nombre d'idiomes spéciaux liés à des variables (i.e. des suffixes qui peuvent être ajoutés à un nom de variable, indiquant ce que nous aimerions faire avec une variable donnée), qui peut être utilisée dans Bash pour faire plus facilement ces types de conversions à la volée au lieu d'avoir à utiliser par exemple le flux SED Éditeur avec une expression régulière pour faire de même.

Si vous êtes intéressé à utiliser des expressions régulières, jetez un œil à nos bash Regexps pour les débutants avec des exemples bash avancé regex avec des exemples d'exemples!

Cela fait du travail avec des variables qui ont besoin de modification des cas, ou si La déclaration testant beaucoup plus facilement et offre une grande flexibilité. Les idiomes peuvent être ajoutés directement à l'intérieur du si déclarations et n'ont pas besoin d'employer de sous-coquille avec sed.

Alors que la syntaxe a l'air légèrement complexe pour commencer, une fois que vous aurez appris un petit astuce de soutien mental pour vous souvenir des bonnes touches, vous serez sur la bonne voie pour utiliser ces idioms dans votre prochain script ou bash Script One-liner sur la ligne de commande!

Dans ce tutoriel, vous apprendrez:

  • Comment utiliser le ^, ^^, , et ,, Bash Variable Suffix idiomes
  • Comment utiliser une expression régulière [] Idiome de gamme en combinaison avec ces
  • Comment utiliser le ^ et , idiomes directement de l'intérieur si affirmations
  • Des exemples détaillés illustrant l'utilisation de ^, ^^, , et ,,
Bash Advanced Variable Idiomes pour la gestion de la sensibilité aux cas

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution Linux
Logiciel Ligne de commande bash, système basé sur Linux
Autre Toute utilité qui n'est pas incluse dans le shell bash par défaut peut être installée en utilisant Sudo Apt-Get Install Utility-Name (ou Installation de miam pour les systèmes basés sur Redhat)
Conventions # - nécessite que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - exige que les commandes Linux soient exécutées en tant qu'utilisateur régulier non privilégié


Exemple 1: Faire des variables complètes en majuscules

Commençons par un exemple montrant comment imprimer une variable en majuscules:

$ Var = "Make Me Uppercase"; echo "$ var ^^" Faire-moi en majuscules 

Nous définissons d'abord la variable Var pour Fais-moi en majuscules. La façon dont nous l'avons fait est en utilisant ^^ À la fin du nom de la variable - un suffixe, un idiome bash, pour dire à l'interprète interne bash pour remplacer notre texte à sa version majuscule.

Notez que chaque fois que l'on définit une variable, on utilisera le Var = syntaxe, laissant la variable principale ($) Idiome bash. Les utilisations ultérieures, qui ne sont pas réaffectées par elles-mêmes, utiliseront le $ syntaxe. Par conséquent, l'écho utilise $.

Vous pouvez également voir et être utilisé autour du nom de la variable. Bien que ce ne soit pas strictement nécessaire:

$ Var = 1; Echo $ var 1 

Il est fortement recommandé, et je le recommande personnellement également, de citer toujours correctement les variables, car il évite les erreurs et même les problèmes comme où il n'est pas clair pour l'interprète bash dans les coulisses lorsqu'une variable se termine:

$ Var = "a"; écho "$ vara" 

Dans le premier exemple, l'interprète bash voit un nom variable commencer ($) et continue de lire jusqu'à ce qu'il touche un espace, comme on peut le voir ici:

$ Var = "a"; écho "$ var a" a 

Ici, nous devions introduire un espace juste pour faire notre écho travailler correctement.

En d'autres termes, dans notre ancien exemple, le nom variable que Bash voit est Vara et il est incapable de se séparer / de voir où se termine la variable et le reste de la chaîne à sortie commence ou redémarre. Comparons cela avec des variables correctement encapsuliantes avec et :

$ Var = "a"; écho "$ var a" aa 

Ici, aucun problème n'est vu; Il est clair pour l'interprète bash que $ Var est la variable et un Le texte est-il à suivre, tout cela grâce à un engagement correct de notre variable.

Cela se traduit également, de manière forte, à l'utilisation du spécial ^^ idiome et autres idiomes de bash. Illustons ceci:

$ Var = "Make Me Uppercase"; echo $ var ^^ me faire en majuscule ^^ $ var = "MAISE-MOI UPPERCASE"; echo "$ var ^^" Faire-moi en majuscule ^^ 

Dans ce cas, Bash est en mesure de voir que nous aimerions le Var variable à imprimer, bien que les interprètes ^^ comme texte standard. Comme on peut le voir clairement à partir des exemples et précédents, il est de la meilleure pratique de toujours entourer les noms de variables avec et .

Exemple 2: Faire des variables complètes en minuscules

Maintenant que nous avons vu comment faire une variable complète en majuscules en utilisant le ^^ idiome, regardons comment changer les variables complètes en minuscules en utilisant le ,, idiome:

$ Var = "Make Me Minkecase"; Echo "$ var ,," Faire-moi les minuscules 

C'est un idiome de syntaxe intéressant à utiliser ,, comme un suffixe à la variable, mais cela fonctionne correctement comme indiqué.



Un petit truc de soutien mental pour se souvenir de ces

Un excellent moyen / méthode pour se souvenir de quoi que ce soit est de confirmer visuellement ou d'imaginer ce qui doit être rappelé. Si vous pouvez ajouter quelques constructions mentales à cela, comme faire des relations avec d'autres choses, vous vous en souvenez probablement la même fois.

Ceci est de jeter un œil à votre clavier physique, et si vous utilisez un clavier Querty comme moi, vous verrez que ^ est Shift-6 et ',' est juste à côté du m. Comment cela aide-t-il?

Premièrement, le 6/ /^ La clé est en haut, et le , La clé est en bas. Ensuite, le , La clé est également celle en bas le plus proche non-alphabet-caractéristique au 6 clé. Enfin, les deux touches sont sur le côté droit du clavier rappelant que ces idiomes sont un suffixe, pas un préfixe, à une variable

Une fois que vous l'avez confirmé visuellement une ou deux fois, il restera probablement très bien en mémoire et vous pourrez utiliser ces idiomes dans votre prochain script de bash ou une seule-liner sans avoir à référencer la syntaxe.

Exemple 3: Modification des lettres spécifiques

Nous pouvons également faire une lettre spécifique en majuscule:

$ Var = "ababab cdcdcd"; echo "$ var ^^ b" ababab cdcdcd 

Ou minuscules:

$ Var = "ababab cdcdcd"; Echo "$ var ,, C" ABABAB CDCDCD 

Il y a deux gotchas / limitations ici. Premièrement, nous devons nous assurer de spécifier le bon cas de lettre pour commencer. Ainsi, spécifiant un remplacement en minuscules pour la lettre c ne fonctionnera pas:

$ Var = "ababab cdcdcd"; Echo "$ var ,, C" ABABAB CDCDCD 

Comme il n'y a tout simplement pas de minuscules c Dans le texte, il n'y a que C (majuscules), et cela fonctionne bien comme l'exemple indiqué ci-dessus.

Nous ne pouvons pas non plus spécifier plusieurs lettres en utilisant l'un ou l'autre de ces formats présumés mais non travailleurs:

$ Var = "ababab cdcdcd"; echo "$ var ,, cd" ababab cdcdcd $ var = "ababab cdcdcd"; echo "$ var ,, c ,, d" ababab cdcdcd 

La façon de faire fonctionner cela correctement est d'utiliser le format d'expression régulière de [… Liste de sélection…], comme suit:

$ Var = "ababab cdcdcd"; Echo "$ var ,, [CD]" ABABAB CDCDCD 

Démarrer la phrase avec un caractère majuscule ou minuscule

Changer uniquement la première lettre est également possible:

$ Var = "ababab cdcdcd"; echo "$ var ^" ababab cdcdcd $ var = "ababab cdcdcd"; Echo "$ var," ABABAB CDCDCD 

Ici, nous avons utilisé un seul ^ ou , Pour faire la première lettre en majuscule ou en minuscules.



Utilisation de ces idiomes de suffixe variable bash à partir des instructions IF

Nous pouvons également utiliser ces idiomes de suffixe variable bash directement à partir de l'intérieur si déclarations:

$ Var = "ABC"; si ["$ var ^^" == "ABC"]; Puis écho 'correspondant!';; else echo 'non assorti!';; Fi correspondant! 

Ici, nous avons une variable Var avec valeur abc. Ensuite, à l'intérieur du si déclaration, nous modifions le contenu de la variable, dynamiquement, en abc en utilisant $ Var ^^ Comme notre premier compare la chaîne dans le si déclaration. Ensuite, nous comparons avec abc Et nous avons un match, prouvant que notre substitution en ligne à la maîtrise en majuscule fonctionnait.

C'est beaucoup plus simple que de démarrer une sous-coquille et de faire la même utilisation sed Et une expression régulière:

$ Var = "ABC"; Si ["$ (echo" $ var "| SED 'S | [A-Z] | \ U & | G')" == "ABC"]; Puis écho 'correspondant!';; else echo 'non assorti!';; Fi correspondant! 

Le \ U & dans ce sed L'instruction peut être lue comme «Changer toute capture (réalisée par [A-Z] et références par & dans \ U &)à la majuscule (\ U ') équivalent de celui-ci. Comparez la complexité de cette solution à la précédente.

Un autre si exemple

$ Var = "ABC"; si [["$ var ^^ b" == * "b" *]]; Puis écho 'correspondant!';; else echo 'non assorti!';; Fi correspondant! 

Dans cet exemple, nous avons changé le texte abc pour abc en utilisant $ Var ^^ b Comme décrit précédemment (majuscules uniquement la lettre b). Ensuite, nous utilisons une comparaison qui a un astérisque à gauche et à droite de la lettre B. Cela signifie que nous recherchons… n'importe quelle chaîne… suivie de B suivi de… n'importe quelle chaîne… (notez que l'on peut également laisser l'astérisque de départ ou de fin afin de faire correspondre les phrases en commençant par ou se terminant par B respectivement).

Conclusion

Dans cet article, nous avons exploré les idiomes du suffixe variable bash ^, ^^, , et ,,. Nous avons regardé comment ils peuvent être utilisés pour remplacer les chaînes à leurs variantes supérieures et minuscules, et comment travailler avec une ou plusieurs lettres individuelles, y compris la première lettre majuscule ou minuscule.

Nous avons également exploré comment utiliser ces idiomes plus loin de l'intérieur des instructions si. Enfin, nous avons fourni une astuce de support de mémoire proposée pour nous rappeler quels caractères peuvent être utilisés et où, comme idioms bash pour la substitution supérieure et minuscule du texte.

Laissez-nous une pensée avec vos commandes de substitution de cas de texte les plus cool! Apprécier!

Tutoriels Linux connexes:

  • Script bash: script en pause avant de continuer
  • Advanced Bash Regex avec des exemples
  • Gestion des processus de fond de bash
  • Gestion de scripts et de processus de bash multithread au…
  • Boucles de bash avec des exemples
  • Variables de bash spéciaux avec des exemples
  • Temps vos scripts et procédures de bash de l'intérieur du code
  • Bash regexps pour les débutants avec des exemples
  • Comparez la chaîne en bash
  • Analyse variable correcte et citant en bash