So schreiben Sie in KornShell Wörter groß (d. h. den ersten Buchstaben groß)

So schreiben Sie in KornShell Wörter groß (d. h. den ersten Buchstaben groß)

Gibt es in KornShell eine integrierte Möglichkeit, ein Wort groß zu schreiben, z. B. korn-> Korn? Ein Bash 4-Beispiel zur Verdeutlichung:

str='korn'
echo "${str^}"

Wenn es dafür in KornShell keine integrierte Möglichkeit gibt, was ist dann die prägnanteste und effizienteste Möglichkeit, eine Funktion zu schreiben, die dies erledigt?

Antwort1

Hier ist eine reine KSH-Methode (KSH93):

function cap {
    typeset -u f
    f=${1:0:1}
    printf "%s%s\n" "$f" "${1:1}"
}

$ cap korn
Korn

Antwort2

Wenn Sie KSH93 nicht zur Verfügung haben, können Sie es in Standard-KSH wie folgt tun:

function capitalize { 
  typeset -u first
  first=${1%"${1#?}"}
  print "${first}${1#?}"

}

${1#?}entfernt alle Zeichen, die mit "?" übereinstimmen, vom Anfang des ersten Arguments. d. h. entfernt das erste Zeichen

${var%pattern}streift patternvom Ende ab var. Wenn wir das ursprüngliche Wort minus des ersten Buchstabens als Muster ( ${1#?}) verwenden, erhalten wir den ersten Buchstaben zurück.

typeset -u macht den ersten Buchstaben groß

$ capitalize "the funky chicken"
The funky chicken

Achtung, das funktioniert nicht immer, da nach dem ersten Buchstaben des Wortes spezielle Regex-Zeichen stehen können, die dann auch als solche interpretiert werden ${var%pattern}. zB

$ capitalize a*
A**

Antwort3

% str='korn'
% echo ${(U)str:0:1}${str#?} 
Korn

verwandte Informationen