Ignorar maiúsculas e minúsculas da entrada do usuário

1

Estou tentando escrever um script para capturar a entrada do usuário. O script deve ignorar o caso.

Considere este script foo.sh :

if [ $1 == "string" ]; then
  echo true
else
  echo false
fi

Se a entrada de foo.sh for STRING ou StRiNg , o resultado será falso.

Como posso ignorar o caso na condição if ?

    
por The KingMaker 15.11.2013 / 16:21

2 respostas

3

Supondo que você esteja usando bash 4.0+ :

${1,,}

Caso contrário, tr ou awk deve funcionar:

var=$(echo "$1" | awk '{print tolower($0)}')
var=$(echo "$1" | tr '[:upper:]' '[:lower:]')

Resumos:

  • O awk recebe a entrada e simplesmente imprime $0 (toda a linha de entrada) depois de usar a função tolower() integrada.

  • Tr parece bastante autoexplicativo, mas deixe-me saber se você tiver dúvidas sobre isso.

por 15.11.2013 / 16:27
1

declare tem uma função de minúscula:

declare -l str=$1
[[ $str = "string" ]] && echo true || echo false
    
por 16.11.2013 / 02:06