Como você está usando bash , se você armazenou sua string em uma variável, você também pode fazer isso apenas com shell:
uscore="this_is_the_string_to_be_converted"
arr=(${uscore//_/ })
printf %s "${arr[@]^}"
ThisIsTheStringToBeConverted
${uscore//_/ } substitui todo o _ pelo espaço, (....) divide a sequência em uma matriz, ${arr[@]^} converte a primeira letra de cada elemento em maiúscula e, em seguida, printf %s .. imprime todos os elementos um após o outro. br>
Você pode armazenar a string de camelo em outra variável:
printf -v ccase %s "${arr[@]^}"
e use / reutilize mais tarde, por exemplo:
printf %s\n $ccase
ThisIsTheStringToBeConverted
Ou com zsh :
uscore="this_is_the_string_to_be_converted"
arr=(${(s:_:)uscore})
printf %s "${(C)arr}"
ThisIsTheStringToBeConverted
(${(s:_:)uscore}) divide a sequência em _ em uma matriz, (C) capitaliza a primeira letra de cada elemento e printf %s ... imprime todos os elementos um após o outro.
Para armazená-lo em outra variável, você pode usar (j::) para unir os elementos:
ccase=${(j::)${(C)arr}}
e use / reutilize mais tarde:
printf %s\n $ccase
ThisIsTheStringToBeConverted