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

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

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

관련 정보