.png)
korn
KornShell에는 -> 와 같이 단어를 대문자로 표시하는 방법이 내장되어 있습니까 Korn
? 명확히 하기 위한 Bash 4 예:
str='korn'
echo "${str^}"
KornShell에 이 작업을 수행하는 일반적인 방법이 없다면 이를 수행하는 함수를 작성하는 가장 간결하고 효율적인 방법은 무엇입니까?
답변1
다음은 순수한 ksh(ksh93) 방식입니다.
function cap {
typeset -u f
f=${1:0:1}
printf "%s%s\n" "$f" "${1:1}"
}
$ cap korn
Korn
답변2
ksh93을 사용할 수 없는 경우 다음과 같이 표준 ksh에서 수행할 수 있습니다.
function capitalize {
typeset -u first
first=${1%"${1#?}"}
print "${first}${1#?}"
}
${1#?}
"?"와 일치하는 모든 문자를 제거합니다. 첫 번째 인수의 시작부터. 즉, 첫 번째 문자를 제거합니다.
${var%pattern}
pattern
의 끝에서 제거됩니다 var
. 원래 단어에서 첫 번째 문자를 뺀 패턴을 패턴( ${1#?}
)으로 사용하면 첫 번째 문자를 다시 가져옵니다.
typeset -u 첫 글자를 대문자로 바꿉니다.
$ capitalize "the funky chicken"
The funky chicken
주의할 점은 단어의 첫 글자 뒤에 특수 정규식 문자가 있을 수 있고 에 의해 그렇게 해석될 수 있기 때문에 이것이 실제로 항상 작동하는 것은 아닙니다 ${var%pattern}
. 예를 들어
$ capitalize a*
A**
답변3
% str='korn'
% echo ${(U)str:0:1}${str#?}
Korn