você está aqui: Home  → Arquivo de Mensagens Workshop Gratuito sobre Programação Shell Linux

Tipagem no Shell

Colaboração: Julio Cezar Neves

Data de Publicação: 10 de abril de 2020

Um recadinho rápido, as vagas com 20% de desconto para o próximo curso sobre Programação Shell Linux, com o Prof. Julio Neves, estão quase acabando. São poucas turmas no ano e com desconto vai ser só essa mesmo.

»»» Saiba mais


Tipagem no Shell

O Shell está pouco se lixando para tipagem de variáveis. Com isso quero dizer que se você cria uma variável o Shell não está nem aí para se ela é do tipo inteiro, ou uma cadeia ou do tipo ponto flutuante, ou ... Nada disso importa, porém existe um comando intrínseco (builtin) que por vezes facilita bastante a vida de um programador, atribuindo não um tipo, mas uma forma de usar a variável, a instrução declare.

Sua sintaxe é a seguinte:

declare [OPT] [NOME[=VALOR] ...] 

As opções (OPT) podem ser acionadas com -OPT e desassociadas com +OPT. As principais são as seguintes:

Opção Descrição
-a NOME é um vetor indexado
-A NOME é um vetor associativo
-c NOME é capitalizado (só a primeira letra em maiúscula)
-i NOME é um inteiro
-l Converte conteúdo de NOME para minúscula
-u Converte conteúdo de NOME para maiúscula
-r NOME será uma constante (seu valor não pode ser alterado)
-x NOME será exportada para todos os subshells

Vejamos seus principais usos:

Declarando inteiros

O uso a seguir foi rapidamente abordado na seção referente ao comando expr.

Veja só que interessante esse modo de usarmos a aritmética:

$ declare -i Num	Num foi declarado como um inteiro (-i)
$ Num=2+3*4
$ echo $Num
14
$ Num=(2+3)*4
$ echo $Num
20

Podemos inclusive já declarar e atribuir simultaneamente:

$ declare -i Num=2*(3+4)
$ echo $Num
14

Declarando maiúsculas

Para termos somente maiúsculas em uma variável também podemos declará-la usando a opção -u (de uppercase = maiúscula). Veja:

$ Maiusc="converte para maiúsculas"        # Antes de declarar
$ declare -u Maiusc                        # Só agora declarou
$ echo $Maiusc	                           # Continuou minúsculo
converte para maiúsculas
$ Maiusc="converte para maiúsculas"        # Atribuiu após o declare
$ echo $Maiusc                             # Agora funcionou
CONVERTE PARA MAIÚSCULAS

Declarando minúsculas

O inverso disso seria usarmos a opção -l (de lowercase = minúscula). Veja:

$ declare -l Minusc 
$ Minusc="CONVERTE PARA MINÚSCULAS"
$ echo $Minusc 
converte para minúsculas

Mas note, tudo que foi dito sobre essas conversões só é válido após o declare ter sido feito.

Repare:

$ var="xxxx"                 # Vou atribuir antes de declarar
$ declare -u var 
$ echo $var 
xxxx                         # Nada mudou, continua minúscula
$ var="xxxx"                 # Atribuindo após declaração
$ echo $var 
XXXX                         # Agora funcionou... 

Declarando valores constantes

Outro galhão que esse intrínseco (builtin) quebra é para criar uma constante, isto é, uma variável que seja somente de leitura.

$ declare -r Const=Constante
$ echo $Const
Constante
$ Const=Variável
bash: Const: a variável permite somente leitura
$ unset Const
bash: unset: Const: impossível desconfigurar: variável somente leitura

Capitalizando uma palavra

Usando a opção -c do declare, podemos capitalizar uma palavra.

$ declare -c Nom
$ read -p "Nome: " Nom
Nome: frei 
$ echo $Nom
Frei 
$ read -p "Nome: " Nom
Nome: FREI 
$ echo $Nom
Frei

Mas não todas as palavras de uma frase:

$ read -p "Nome: " Nom
Nome: frei adão 
$ echo $Nom
Frei adão 
$ read -p "Nome: " Nom
Nome: FREI ADÂO 
$ echo $Nom
Frei adâo


Veja a relação completa dos artigos de Julio Cezar Neves