Variáveis de Shell no Linux
Definição de variável
A ideia é a mesma utilizada em qualquer linguagem de programação, a variável é um elemento que armazena valores que vamos utilizar mais a frente em nosso script.
Esses dados podem ser de tipos diferentes como texto, número, string ou retorno da saída de um comando executado anteriormente.
Tipos de variáveis
Para falar sobre variáveis no ambiente do shell, é preciso antes definir o que é variável local e variável de ambiente (global).
Varíavel local: São variáveis que funcionam apenas na sessão onde ela foi definida.
Para criar uma variável local, veja o exemplo abaixo:
# LOCAL="erick1"
Variável de ambiente (global): São variáveis que funcionam dentro da sessão que a definiu mas também em subshell.
Para criar uma variável de ambiente (global), veja o exemplo abaixo:
# export LOCAL="erick2"
Em resumo, para definir uma variável você não coloca o export na frente, mas na variável de ambiente (global) é preciso por o export na frente.
Regras para criar variável
Observação: O shell possui case sensitive, isso significa que mais de uma variável pode conter o mesmo nome mas precisa ser escrita de maneiras diferentes, por exemplo.
nome=erick
NOME=erick2
Mesmo que isso seja possível, procure manter as boas práticas para evitar dores de cabeça.
Algumas regras precisam ser seguidas durante a definição do nome de uma variável, elas dizem que:
O nome da variável pode ter números (mas não pode iniciar com número), letras, o símbolo _ (underline), não pode ter caracteres especiais e não pode ter espaço antes ou depois do sinal de =.
Modo errado de criar:
# 1nome=erick
# 1_nome=erick
# 1nome_blog=erick
# nome= erick
Modo certo de criar:
# nome=erick
# _nome=erick
# nome_blog=erick
# nome01=erick
Caso queira incluir um espaço após o =, use aspas e coloque o espaço dentro das aspas, exemplo abaixo.
# nome=" erick"
# _nome=" erick"
No exemplo acima foi criada uma variável local mas agora irei mostrar como que você pode criar uma variável de ambiente (global).
# export nome2=erick2
# export _nome2=erick2
# export nome_blog2=erick2
# export nome02=erick2
# export _nome02=" erick2"
Visualizando uma variável
Para conseguir visualizar o valor que está ligado a uma variável, você pode utilizar o comando echo seguido de $nomedavariavel, é importante ter o cifrão na frente para que o shell entenda que é uma variável.
# echo $nome
# echo $_nome
# echo $nome_blog
Excluindo variável local ou global
Esse é um procedimento muito simples, apenas coloque o unset e depois o nome da variável sem o cifrão. O unset serve para ambos os tipos de variáveis.
# unset nomedavariavel
Exibindo variáveis locais e globais
É possível visualizar todas as variáveis que existem em seu ambiente, para isso utilize o comando set.
# set
Exibindo variáveis de ambiente (global)
Ao contrário do comando set, com o comando env você só conseguirá ver as variáveis de ambiente (global).
# env
Palavras reservadas
As palavras reservadas possuem um significado diferente para o shell pois são usadas para iniciar e terminar comandos compostos do shell, por tanto não é recomendado utilizar elas como nome de uma variável, são elas:
if, then, elif, else, fi, time, for, in, until, while, do, done, case, esac, coproc, select, function, {}, [[]] e !.
Variáveis bash
Como o próprio arquivo do manual bash diz, elas são usadas ou definidas pelo próprio bash. Existe uma lista enorme então deixarei o link do manual para que você possa ler com mais calma.
GNU.org Manual Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables
Imprimindo variáveis com echo
Quando se utiliza o echo para imprimir o conteúdo de uma variável é preciso tomar cuidado, pois dependendo de como você construa o resultado será diferente.
Aspas simples
Se você utilizar o echo com aspas simples o shell irá interpretar a variável como se fosse um texto qualquer, independente de você ter colocado o cifrão na frente do nome e não vai imprimir o conteúdo dela.
# echo '$nome'
$nome
Aspas duplas
Mas ao usar aspas duplas o shell conseguirá interpretar a variável da maneira correta para fazer a exibição do seu conteúdo.
# echo "$nome"
erick
Ainda existe outro tipo de variáveis especiais do bash mas elas ficarão para outro artigo aqui no blog.
Links de referência
GNU.org Manual Bash: https://www.gnu.org/software/bash/manual/bash.html
Para críticas, dúvidas e sugestões, envie um e-mail para erick{“arrob4”}erickandrade.com.br.