<Anterior | Conteúdo | Próxima>
Conversão de Caso
Versões recentes de bater tem suporte para conversão de letras maiúsculas / minúsculas de strings. bater
tem quatro expansões de parâmetro e duas opções para o declarar comando para apoiá-lo.
Então, para que serve a conversão de caixa? Além do valor estético óbvio, ele tem um papel importante na programação. Vamos considerar o caso de uma consulta ao banco de dados. Imagine que um usuário inseriu uma string em um campo de entrada de dados que desejamos consultar em um banco de dados. É possível que o usuário insira o valor em letras maiúsculas ou minúsculas ou uma combinação de ambas. Certamente não queremos preencher nosso banco de dados com todas as permutações possíveis de grafias maiúsculas e minúsculas. O que fazer?
Uma abordagem comum para este problema é normalizar a entrada do usuário. Ou seja, converta-o
em um formulário padronizado antes de tentarmos a consulta ao banco de dados. Podemos fazer isso convertendo todos os caracteres da entrada do usuário em letras maiúsculas ou minúsculas e garantir que as entradas do banco de dados sejam normalizadas da mesma maneira.
O declarar comando pode ser usado para normalizar strings para maiúsculas ou minúsculas. Usando declarar, podemos forçar uma variável a sempre conter o formato desejado, não importa o que seja atribuído a ela:
#! / Bin / bash
# ul-declare: demonstra conversão de caso via declare declare -u upper
declarar -l inferior
se [[$ 1]]; então
superior = "$ 1" inferior = "$ 1" echo $ superior echo $ inferior
fi
#! / Bin / bash
# ul-declare: demonstra conversão de caso via declare declare -u upper
declarar -l inferior
se [[$ 1]]; então
superior = "$ 1" inferior = "$ 1" echo $ superior echo $ inferior
fi
No script acima, usamos declarar para criar duas variáveis, superior e diminuir. Atribuímos o valor do primeiro argumento da linha de comando (parâmetro posicional 1) a cada uma das variáveis e depois as exibimos na tela:
[me @ linuxbox ~] $ ul-declarar aBc
abc
abc
[me @ linuxbox ~] $ ul-declarar aBc
abc
abc
Como podemos ver, o argumento da linha de comando ("aBc") foi normalizado.
Além de declarar, existem quatro expansões de parâmetro que realizam a conversão de maiúsculas / minúsculas:
Tabela 34-1: Expansões de parâmetro de conversão de caso
Resultado do formato
Resultado do formato
${parâmetro,,} Expanda o valor de parâmetro em todas as letras minúsculas.
${parâmetro,} Expanda o valor de parâmetro mudando apenas o primeiro
caractere em minúsculas.
${parâmetro^^} Expanda o valor de parâmetro em todas as letras maiúsculas.
${parâmetro^} Expanda o valor de parâmetro mudando apenas o primeiro
caractere para maiúsculas (maiúsculas).
Aqui está um script que demonstra essas expansões:
#! / Bin / bash
# ul-param: demonstra conversão de caso via expansão de parâmetro if [[$ 1]]; então
echo $ {1 ,,}
echo $ {1,} echo $ {1 ^^} echo $ {1 ^}
fi
#! / Bin / bash
# ul-param: demonstra conversão de caso via expansão de parâmetro if [[$ 1]]; então
echo $ {1 ,,}
echo $ {1,} echo $ {1 ^^} echo $ {1 ^}
fi
Aqui está o script em ação:
[me @ linuxbox ~] $ ul-param aBc
ab ab ab ab
Abc
[me @ linuxbox ~] $ ul-param aBc
ab ab ab ab
Abc
Novamente, processamos o primeiro argumento da linha de comando e produzimos as quatro variações suportadas pelas expansões de parâmetro. Embora este script use o primeiro parâmetro posicional, parâmetro pode ser qualquer string, variável ou expressão de string.