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 $. Por exemplo, para exibir o valor da variável usando o comando 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, que armazena o nome do usuário atual. Podemos exibir seu valor no console:

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 e AGE, e em seguida exibimos seus valores no console. Vamos executar o script:

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 duas vezes, e após a segunda definição, exibimos o valor da variável novamente no console. Vamos executar o script:

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, mas não a define. Presume-se que a variável será definida externamente. No console, defina a variável message e execute o script com o comando 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 no shell atual e a exibimos no console. Em seguida, o comando bash hello executa o script hello em um novo subshell. Observamos que o comando echo no script não exibe nada, pois a variável message do shell pai não está acessível no subshell. No entanto, após a execução do script e o fechamento do subshell, ainda podemos usar a variável 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 no diretório home com o seguinte conteúdo:

#!/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, incorpora o conteúdo do arquivo no console, permitindo acessar as variáveis.

Obtenção de Entrada

Com o comando read, é possível obter dados do usuário e armazená-los em uma variável. Por exemplo, defina o seguinte script 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 inicialmente exibe uma mensagem solicitando que o usuário insira o nome. Em seguida, o comando read NAME armazena os dados inseridos na variável NAME.

Em seguida, exibimos o nome usando tabulação \t. Para que esta sequência seja interpretada como tabulação, o comando echo usa a opção -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.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com