KornShell에서 단어를 대문자로 시작하는 방법(예: 첫 글자를 대문자로)

KornShell에서 단어를 대문자로 시작하는 방법(예: 첫 글자를 대문자로)

kornKornShell에는 -> 와 같이 단어를 대문자로 표시하는 방법이 내장되어 있습니까 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

관련 정보