212 votes

majuscule le premier caractère dans une variable bash

Je veux majuscules juste le premier caractère dans mon string avec bash.

foo="bar";

//uppercase first character

echo $foo;

doit imprimer "de la Barre";

402voto

Steve Points 18420

Un avec bash:

echo "${foo^}"

impressions:

Bar

193voto

Michael Hoffman Points 8557
foo="$(tr '[:lower:]' '[:upper:]' <<< ${foo:0:1})${foo:1}"

34voto

Steve Points 18420

Un avec sed:

echo "$(echo "$foo" | sed 's/.*/\u&/')"

Impressions:

Bar

28voto

Majid L Points 5467
$ foo="bar";
$ foo=`echo ${foo:0:1} | tr  '[a-z]' '[A-Z]'`${foo:1}
$ echo $foo
Bar

6voto

Michał Górny Points 6450

Il peut être fait dans le plus pur bash avec bash-3.2 ainsi:

# First, get the first character.
fl=${foo:0:1}

# Safety check: it must be a letter :).
if [[ ${fl} == [a-z] ]]; then
    # Now, obtain its octal value using printf (builtin).
    ord=$(printf '%o' "'${fl}")

    # Fun fact: [a-z] maps onto 0141..0172. [A-Z] is 0101..0132.
    # We can use decimal '- 40' to get the expected result!
    ord=$(( ord - 40 ))

    # Finally, map the new value back to a character.
    fl=$(printf '%b' '\'${ord})
fi

echo "${fl}${foo:1}"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X