Vamos começar com este script de teste:
$ cat script.sh
GUARD=${1^^}
echo $GUARD
Isso funciona:
$ bash script.sh abc
ABC
Isso não funciona:
$ sh script.sh abc
script.sh: 1: script.sh: Bad substitution
Isso porque, no meu sistema, como a maioria dos sistemas parecidos com o debian, o shell padrão, /bin/sh
, não é bash. Para obter recursos bash, é necessário invocar explicitamente o bash.
O shell padrão em sistemas do tipo debian é dash
. Foi escolhido não por causa de recursos, mas por causa da velocidade. Não suporta ^^
. Para ver o que suporta, leia man dash
.