
KornShell 中是否有內建方法將單字大寫,例如korn
-> 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