Je vois que dans Bash> lexpansion des variables 4.0 est utilisée pour minuscules une variable. Par exemple
echo ${variable,,}
En lisant la page de manuel je ne comprends vraiment pas pourquoi le shell convertit la chaîne en minuscules.
Une expression de séquence prend la forme {x..y [.. incr]}, où x et y sont soit entiers ou caractères uniques, et incr, un incrément facultatif, est un entier. Lorsque des entiers sont fournis, lexpression se développe en chaque nombre compris entre x et y, inclus. Les entiers fournis peuvent être précédés de «0» pour forcer chaque terme à avoir le même largeur. Lorsque x ou y commence par un zéro, le shell tente de forcer tous les termes générés à contenir le même nombre de chiffres, en remplaçant par zéro si nécessaire. Lorsque des caractères sont fournis, lexpression se développe lexicographiquement en chaque caractère entre x et y, inclus, en utilisant les paramètres régionaux par défaut C. Notez que x et y doivent être du même type. Lorsque lincrément est fourni, il est utilisé comme différence entre chaque terme. Lincrément par défaut est 1 o r -1 selon le cas.
Pourquoi la variable est-elle convertie en minuscules?
Réponse
Vous « lisez la mauvaise section de la documentation; regardez plutôt expansion des paramètres du shell .
${parameter^pattern}
${parameter^^pattern}
${parameter,pattern}
${parameter,,pattern}
Cette extension modifie la casse des caractères alphabétiques dans
parameter
. Lepattern
est développé pour produire un modèle comme dans le développement de nom de fichier. Chaque caractère de la valeur développée deparameter
est testé par rapport àpattern
et, sil correspond au modèle, sa casse est convertie. Le modèle ne doit pas tenter de faire correspondre plus dun caractère. L’opérateur «^» convertit le modèle de correspondance des lettres minuscules en majuscules; l’opérateur ‘,’ convertit les lettres majuscules correspondantes en minuscules. Les extensions «^^» et «,,» convertissent chaque caractère correspondant dans la valeur développée; les extensions «^» et «,» correspondent et ne convertissent que le premier caractère de la valeur développée. Sipattern
est omis, il est traité comme un «?», Qui correspond à chaque caractère. Siparameter
vaut «@» ou «*», l’opération de modification de casse est appliquée à chaque paramètre de position à son tour, et le développement est la liste résultante. Siparameter
est une variable de tableau indexée avec @ ou *, lopération de modification de casse est appliquée à chaque membre du tableau à son tour, et le développement est la liste résultante.
Réponse
Vous citez la partie « Expansion des accolades », Une « extension daccolade » ne commence pas par un $
.
Vous devez exécuter cette commande:
LESS=+/"\{parameter\^pattern\}" man bash
Pour trouver la partie de la « modification de la casse » qui commence par un $
(${ ^^ }
).