Aqui está uma maneira pura do ksh (ksh93):
function cap {
typeset -u f
f=${1:0:1}
printf "%s%s\n" "$f" "${1:1}"
}
$ cap korn
Korn
Existe uma maneira integrada no KornShell de capitalizar uma palavra, por exemplo? korn
- > %código%? Um exemplo de Bash 4 para esclarecer:
str='korn'
echo "${str^}"
Se não há uma maneira de fazer isso no KornShell, qual é a maneira mais concisa e eficiente de escrever uma função que o fará?
Se você não tem o ksh93 disponível, você pode fazê-lo no ksh padrão da seguinte forma:
function capitalize {
typeset -u first
first=${1%"${1#?}"}
print "${first}${1#?}"
}
${1#?}
retira todos os caracteres correspondentes "?" desde o começo do primeiro arg. isto é, retira o primeiro caractere
${var%pattern}
retira pattern
do final de var
. Se usarmos a palavra original menos a primeira letra como padrão ( ${1#?}
), obtemos a primeira letra de volta.
typeset -u transforma a primeira letra maiúscula
$ capitalize "the funky chicken"
The funky chicken
Advertência, isso nem sempre funciona, já que você pode ter caracteres regex especiais após a primeira letra da palavra e eles serão interpretados como ${var%pattern}
. por exemplo,
$ capitalize a*
A**