Ksh

如何在 KornShell 中大寫單詞(即首字母大寫)

  • July 12, 2020

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**

引用自:https://unix.stackexchange.com/questions/43184