Ksh
如何在 KornShell 中大寫單詞(即首字母大寫)
KornShell 中是否有內置方法可以將單詞大寫,例如
korn
->Korn
?一個 Bash 4 範例來澄清:str='korn' echo "${str^}"
如果在 KornShell 中沒有 bultin 方法來執行此操作,那麼編寫可以執行此操作的函式的最簡潔和有效的方法是什麼?
這是一個純粹的 ksh (ksh93) 方式:
function cap { typeset -u f f=${1:0:1} printf "%s%s\n" "$f" "${1:1}" } $ cap korn Korn
如果您沒有可用的 ksh93,您可以像這樣在標準 ksh 中執行此操作:
function capitalize { typeset -u first first=${1%"${1#?}"} print "${first}${1#?}" }
${1#?}
刪除所有匹配“?”的字元 從第一個 arg 開始。即剝離第一個字元
${var%pattern}
從.pattern
_var
如果我們使用原始單詞減去第一個字母作為模式 (${1#?}
),我們會得到第一個字母。typeset -u 將首字母大寫
$ capitalize "the funky chicken" The funky chicken
警告,這實際上並不總是有效,因為你可以在單詞的第一個字母之後有特殊的正則表達式字元,它們將被
${var%pattern}
. 例如$ capitalize a* A**