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