Puisque vous utilisez bash, si vous avez stocké votre chaîne dans une variable, vous pouvez également le faire uniquement en shell:
uscore="this_is_the_string_to_be_converted"
arr=(${uscore//_/ })
printf %s "${arr[@]^}"
ThisIsTheStringToBeConverted
${uscore//_/ }remplace tout _par un espace, (....)divise la chaîne en un tableau, ${arr[@]^}convertit la première lettre de chaque élément en majuscule, puis printf %s ..imprime tous les éléments les uns après les autres.
Vous pouvez stocker la chaîne en chameau dans une autre variable:
printf -v ccase %s "${arr[@]^}"
et l'utiliser / réutiliser plus tard, par exemple:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
Ou, avec zsh:
uscore="this_is_the_string_to_be_converted"
arr=(${(s:_:)uscore})
printf %s "${(C)arr}"
ThisIsTheStringToBeConverted
(${(s:_:)uscore})divise la chaîne _en un tableau, met en (C)majuscule la première lettre de chaque élément et printf %s ...imprime tous les éléments les uns après les autres.
Pour la stocker dans une autre variable, vous pouvez utiliser (j::)pour joindre les éléments:
ccase=${(j::)${(C)arr}}
et l'utiliser / réutiliser plus tard:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
\U\2insère le texte trouvé du deuxième groupe, converti en TOUTES MAJUSCULES. Comparer à\u\2, qui insère le texte en cas de phrase, avec uniquement le premier caractère en majuscule. (2) Tous les exemples ci-dessous traduiront «this_is_a_string» en «ThisIsAString» - c'est ce que vous avez demandé, mais il est légèrement difficile à lire. Vous voudrez peut-être réviser vos exigences pour le cas spécial d'un mot à une lettre (sous-chaîne). … (Suite)