Variáveis - Linux
As variáveis tornam o script mais flexível, permitindo evitar valores fixos. Essencialmente, uma variável representa um identificador ou nome associado a um valor dinâmico, que pode mudar durante a execução do programa.
Para definir variáveis, usamos a seguinte sintaxe:
nome_variavel=valor_variavel
Por exemplo:
message="Hello www.programicio.com"
Aqui, a variável message é definida com o valor "Hello www.programicio.com".
Para acessar o valor de uma variável, utilizamos seu nome precedido pelo símbolo $
echo
echo $message
Podemos definir variáveis e trabalhar com elas tanto em um script shell quanto diretamente no console:
programicio@Programicio:~$ message="Hello www.programicio.com" programicio@Programicio:~$ echo $message Hello www.programicio.com
>É importante notar que o sistema já define várias variáveis globais, conhecidas como variáveis de ambiente, durante a inicialização. Podemos obter essas variáveis usando o comando env
programicio@Programicio:~$ env SHELL=/bin/bash GNOME_SHELL_SESSION_MODE=ubuntu XMODIFIERS=@im=ibus DESKTOP_SESSION=ubuntu GTK_MODULES=gail:atk-bridge PWD=/home/programicio LOGNAME=programicio XDG_SESSION_DESKTOP=ubuntu XDG_SESSION_TYPE=wayland HOME=/home/programicio USERNAME=programicio USER=programicio ...
Por exemplo, entre essas variáveis, temos a variável global USER
programicio@Programicio:~$ echo $USER programicio
Da mesma forma, podemos trabalhar com várias variáveis. Por exemplo, vamos definir o seguinte script shell:
#!/bin/bash
# script que define as variáveis NAME e AGE e exibe seus valores no console
NAME="Tom"
AGE=39
echo $NAME
echo $AGE
exit 0
Aqui, definimos duas variáveis: NAME
AGE
programicio@Programicio:~$ bash hello Tom 39
Uma característica distintiva das variáveis é que podemos alterar seus valores. Por exemplo, vamos definir o seguinte script:
#!/bin/bash
# script que altera dinamicamente o valor de uma variável
message="Hello www.programicio.com"
echo $message
message="Hello World"
echo $message
exit 0
Neste caso, definimos o valor da variável message
Escopo das Variáveis
Ao definir variáveis, é importante lembrar que elas são definidas apenas para o shell atual. Isso significa que, se você iniciar um subshell a partir do shell atual, a variável não estará disponível lá. Da mesma forma, se você definir uma variável em um subshell, ela não estará disponível no shell pai: assim que você sair do subshell e voltar para o shell pai, a variável não estará mais disponível. Por exemplo, considere o seguinte script dentro do arquivo hello
#!/bin/bash
echo $message
exit 0
Este script tenta exibir o valor da variável message
message
bash
programicio@Programicio:~$ message="Hello www.programicio.com" programicio@Programicio:~$ echo $message Hello www.programicio.com programicio@Programicio:~$ bash hello programicio@Programicio:~$ echo $message Hello www.programicio.com
Primeiro, definimos a variável message
bash hello
hello
echo
message
message
Para tornar uma variável do shell pai acessível a todos os subshells, ela deve ser definida usando o comando export
programicio@Programicio:~$ export message="Hello www.programicio.com" programicio@Programicio:~$ echo $message Hello www.programicio.com programicio@Programicio:~$ bash hello Hello www.programicio.com programicio@Programicio:~$ echo $message Hello www.programicio.com
Se precisar que as variáveis estejam disponíveis globalmente, mesmo após reiniciar o computador, elas devem ser adicionadas às variáveis de ambiente.
Incorporando Variáveis
Uma técnica comum ao trabalhar com variáveis é incorporá-las (sourcing) no shell atual. Nesse caso, as variáveis geralmente são definidas em um arquivo. Por exemplo, defina um arquivo vars
#!/bin/bash
name="Tom"
age=39
email="tom@mimimail.com"
Aqui, três variáveis são definidas. Incorpore o arquivo no console e acesse as variáveis:
programicio@Programicio:~$ . vars programicio@Programicio:~$ echo $name Tom programicio@Programicio:~$ echo $age 39 programicio@Programicio:~$ echo $email tom@mimimail.com
O primeiro comando, . vars
Obtenção de Entrada
Com o comando read
hello
#!/bin/bash
# script que lê a entrada do usuário em uma variável NAME
echo Enter your name:
read NAME
echo -e "Your name:\t $NAME"
exit 0
Aqui, o comando echo
read NAME
NAME
Em seguida, exibimos o nome usando tabulação \t
-e
Vamos executar o script:
programicio@Programicio:~$ bash hello Enter your name: Programicio Your name: Programicio
Após exibir a mensagem de solicitação, podemos inserir alguns dados, e eles serão armazenados na variável NAME