# Ubuntu – Command to convert an upper-case string to lower-case

bashscripts

What is the Bash command I can use to convert an upper-case string to lower-case and vice-versa?

Thank you.

If the string is already stored in a variable you can use bash's parameter expansion, specifially ${parameter,,pattern} (available since bash 4.0), where parameter is the name of your variable and pattern is ommitted:$ string="Hello, World!"
$echo$string
Hello, World!
$echo${string,,}
hello, world!

Note that this does not change the value of the variable, only the output. To change the variable you have to assign the new value:

$echo$string
Hello, World!
$string=${string,,}
$echo$string
hello, world!

The upper-case conversion works with ${parameter^^pattern}:$ echo ${string^^} HELLO, WORLD! This works also with Unicode strings (at least with current bash versions, probably needs at least bash 4.3):$ string='ἈΛΦΆβητος'
$echo${string,,}
ἀλφάβητος
$echo${string^^}
ἈΛΦΆΒΗΤΟΣ

If you are using zsh, you can use Parameter Expansion Flags (${(FLAGS)NAME}; available since zsh 2.5) to achieve the same results. The bash syntax does not work in zsh 1). The flag for lower case is L; for upper case it is U:$ string="Hello, World!"
$echo${(L)string}
hello, world!
$echo${(U)string}
HELLO, WORLD!
$echo$string
Hello, World!"

This also works with Unicode strings (at least since zsh 5.0; I did not try with earlier versions):

$string='ἈΛΦΆβητος'$ echo ${(L)string} ἀλφάβητος$ echo \${(U)string}
ἈΛΦΆΒΗΤΟΣ

1) Although, seeing that zsh had this for far longer, it should probably be: "the zsh syntax does not work in bash.