Introdução
Neste laboratório, você aprenderá a trabalhar com variáveis de shell no Linux. As variáveis de shell são essenciais para armazenar e manipular dados em scripts. Elas podem conter vários tipos de valores, como números, caracteres ou strings. Este laboratório guiará você através da criação, referenciação e uso de variáveis de shell, fornecendo uma base sólida para a automação via scripts.
Criar Variáveis de Shell
As variáveis de shell são criadas atribuindo-lhes um valor usando o sinal =. Vamos começar criando um script de shell simples que define algumas variáveis.
Abra um terminal em seu WebIDE (VS Code).
Crie um novo arquivo chamado
variables.shno diretório/home/labex/project:touch /home/labex/project/variables.shAbra o arquivo
variables.shno WebIDE e adicione o seguinte conteúdo:#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' echo "Price per apple: $PRICE_PER_APPLE" echo "My first letters: $MyFirstLetters" echo "Greeting: $greeting"Neste script, criamos três variáveis:
PRICE_PER_APPLE: Uma variável de número inteiro.MyFirstLetters: Uma variável de texto (string).greeting: Uma variável de texto com múltiplos espaços.
Salve o arquivo.
Torne o script executável:
chmod +x /home/labex/project/variables.shExecute o script:
./variables.shVocê deverá ver a seguinte saída:
Price per apple: 5 My first letters: ABC Greeting: Hello world!Observe que os espaços extras na variável
greetingsão preservados na saída quando se usa aspas simples para definir a variável e não se usa aspas no comando echo.
Referenciando Variáveis de Shell
Ao referenciar variáveis de shell, existem alguns cenários onde você precisa usar uma sintaxe especial. Vamos explorar esses casos.
Abra o arquivo
variables.shno WebIDE.Substitua o conteúdo do arquivo pelo seguinte:
#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' ## Escapando caracteres especiais echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE" ## Evitando ambiguidade echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ" ## Preservando espaços em branco echo $greeting echo "$greeting"Salve o arquivo.
Execute o script:
./variables.shVocê deverá ver a seguinte saída:
The price of an Apple today is: $HK 5 The first 10 letters in the alphabet are: ABCDEFGHIJ Hello world! Hello world!Note as diferenças:
- O sinal
$é "escapado" (usando a barra invertida) na primeira linha para ser impresso literalmente. - Chaves
{}são usadas para definir claramente o nome da variável na segunda linha, evitando que o shell se confunda com o texto que vem logo em seguida. - As duas últimas linhas mostram a diferença entre usar aspas e não usar aspas ao referenciar uma variável que contém espaços em branco.
- O sinal
Substituição de Comando
A substituição de comando permite que você use a saída de um comando como o valor de uma variável. Isso é feito envolvendo o comando com $() ou crases (``).
Abra o arquivo
variables.shno WebIDE.Adicione o seguinte conteúdo ao final do arquivo:
## Command substitution CURRENT_DATE=$(date +"%Y-%m-%d") echo "Today's date is: $CURRENT_DATE" FILES_IN_DIR=$(ls) echo "Files in the current directory:" echo "$FILES_IN_DIR" UPTIME=$(uptime -p) echo "System uptime: $UPTIME"Salve o arquivo.
Execute o script:
./variables.shVocê verá uma saída semelhante a esta (os valores reais dependerão do seu sistema):
Today's date is: 2023-08-16 Files in the current directory: variables.sh System uptime: up 2 hours, 15 minutesNeste exemplo:
$(date +"%Y-%m-%d")executa o comandodatee captura sua saída.$(ls)executa o comandolse armazena a lista de arquivos.$(uptime -p)executa o comandouptimecom a opção-ppara capturar o tempo de atividade do sistema de forma amigável.
Operações Aritméticas
As variáveis de shell também podem ser usadas em operações matemáticas. O Bash fornece a sintaxe $((expressão)) para realizar cálculos.
Crie um novo arquivo chamado
arithmetic.shno diretório/home/labex/project:touch /home/labex/project/arithmetic.shAbra o arquivo
arithmetic.shno WebIDE e adicione o seguinte conteúdo:#!/bin/bash X=10 Y=5 ## Addition SUM=$((X + Y)) echo "Sum of $X and $Y is: $SUM" ## Subtraction DIFF=$((X - Y)) echo "Difference between $X and $Y is: $DIFF" ## Multiplication PRODUCT=$((X * Y)) echo "Product of $X and $Y is: $PRODUCT" ## Division QUOTIENT=$((X / Y)) echo "Quotient of $X divided by $Y is: $QUOTIENT" ## Modulus (remainder) REMAINDER=$((X % Y)) echo "Remainder of $X divided by $Y is: $REMAINDER" ## Increment X=$((X + 1)) echo "After incrementing, X is now: $X" ## Decrement Y=$((Y - 1)) echo "After decrementing, Y is now: $Y"Salve o arquivo.
Torne o script executável:
chmod +x /home/labex/project/arithmetic.shExecute o script:
./arithmetic.shVocê deverá ver a seguinte saída:
Sum of 10 and 5 is: 15 Difference between 10 and 5 is: 5 Product of 10 and 5 is: 50 Quotient of 10 divided by 5 is: 2 Remainder of 10 divided by 5 is: 0 After incrementing, X is now: 11 After decrementing, Y is now: 4Este script demonstra várias operações aritméticas básicas usando variáveis de shell.
Usando Variáveis de Ambiente
Variáveis de ambiente são um tipo de variável que fica disponível para todos os processos executados na sessão atual do shell. Vamos explorar algumas variáveis comuns e aprender a criar as nossas próprias.
Crie um novo arquivo chamado
environment.shno diretório/home/labex/project:touch /home/labex/project/environment.shAbra o arquivo
environment.shno WebIDE e adicione o seguinte conteúdo:#!/bin/bash ## Displaying some common environment variables echo "Home directory: $HOME" echo "Current user: $LOGNAME" echo "Shell being used: $SHELL" echo "Current PATH: $PATH" ## Creating a new environment variable export MY_VARIABLE="Hello from my variable" ## Displaying the new variable echo "My new variable: $MY_VARIABLE" ## Creating a child process to demonstrate variable scope bash -c 'echo "MY_VARIABLE in child process: $MY_VARIABLE"' ## Removing the environment variable unset MY_VARIABLE ## Verifying the variable is unset echo "MY_VARIABLE after unsetting: $MY_VARIABLE"Salve o arquivo.
Torne o script executável:
chmod +x /home/labex/project/environment.shExecute o script:
./environment.shVocê verá uma saída semelhante a esta:
Home directory: /home/labex Current user: labex Shell being used: /bin/zsh Current PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin My new variable: Hello from my variable MY_VARIABLE in child process: Hello from my variable MY_VARIABLE after unsetting:Este script demonstra como acessar variáveis de ambiente existentes, como criar novas usando o comando
export(para que processos filhos possam vê-las) e como removê-las comunset.
Resumo
Neste laboratório, você aprendeu a trabalhar com variáveis de shell no Linux. Exploramos a criação e referenciação de variáveis, o uso da substituição de comandos para atribuir resultados de comandos a variáveis, a execução de operações aritméticas e o manuseio de variáveis de ambiente. Essas habilidades formam uma base crucial para a programação em shell e serão inestimáveis à medida que você continuar trabalhando com sistemas Linux.
Os principais pontos aprendidos neste laboratório incluem:
- Como criar e referenciar variáveis de shell.
- O uso de sintaxe especial (como chaves e escapes) para referenciar variáveis em diferentes cenários.
- A utilização da substituição de comando para capturar saídas de programas.
- A realização de cálculos matemáticos simples com variáveis.
- O funcionamento e a manipulação de variáveis de ambiente.
Ao continuar sua jornada no Linux e no scripting, lembre-se de que as variáveis são ferramentas poderosas para armazenar e manipular dados. Pratique o uso delas em seus scripts para tornar seu código mais flexível e reutilizável.



