Use tr para implementar toupper / tolower no Bash

Estou sempre comparando o Bash ao Python para tarefas diárias de script. O Bash é profundamente bonito de várias maneiras, mas a biblioteca Python é incrível. O Bash deveria ter integrado isso desde o primeiro dia.

toupper() { 
local char="$*"
out=$(echo $char | tr [:lower:] [:upper:])
local retval=$?
echo
"$out"
unset
out
unset
char
return $retval
}

A situação melhora após 3.2.25 via expansão de parâmetro :

var="hello world"; echo ${var^^} # toupper()
var="hello world"; echo ${var,,} # tolower()