De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Julio Cezar Neves
Data de Publicação: 10 de abril de 2020
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:
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
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
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...
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
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
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários