read -p "Enter yes/no " SOMEVAR
SOMEVAR=`"echo ${SOMEVAR,,}"`
O código acima me dá um ${SOMEVAR,,}: bad substitution
erro.
read -p "Enter yes/no " SOMEVAR
SOMEVAR=`"echo ${SOMEVAR,,}"`
O código acima me dá um ${SOMEVAR,,}: bad substitution
erro.
A expansão do parâmetro
${variable,,}
seria expandida para o valor de$variable
com todos os caracteres em letras minúsculas nobash
shell. Dado que você recebe um erro de "substituição incorreta" quando esse código é executado, sugere que você está de fato/bin/sh
(o que nem sempre ébash
). Mas não receber um erro pararead -p
sugere que é mais provável que você estejabash
que não suporta essa expansão (introduzida na versão 4 dobash
).A forma genérica da expansão é
${variable,,pattern}
na qual todos os caracteres$variable
dessa correspondênciapattern
seriam convertidos em minúsculas (use^^
para converter em maiúsculas):Consulte também o
bash
manual do seu sistema.Para versões mais antigas de
bash
, você pode fazer o seguinte para colocar em letras minúsculas o valor de uma variável:Isso passa o valor da variável
tr
usando um "here-string". Otr
utilitário translitera todos os caracteres no intervaloA
paraZ
ASCII (assumindo a localidade C/POSIX) para o caractere correspondente no intervaloa
paraz
.Observe também que
é melhor escrito como
Na verdade, o que você escreveu lhe daria um erro de "comando não encontrado" na
bash
versão 4+, a menos que você tenha um comando chamadoecho string
, incluindo o espaço (ondestring
estava o que o usuário digitou). Isso se deve à substituição do comando tentando executar a string entre aspas duplas.