Declaração de Variáveis no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre variáveis em scripts de shell Linux, que são essenciais para armazenar e manipular dados em seus scripts. As variáveis permitem que você armazene informações temporariamente durante a execução do script e reutilize essas informações em todo o seu código.

Compreender como declarar e usar variáveis é uma habilidade fundamental para escrever scripts de shell Linux. Este conhecimento o ajudará a automatizar tarefas, gerenciar configurações e criar scripts mais dinâmicos para várias aplicações.

Ao final deste laboratório, você entenderá como criar variáveis simples, variáveis inteiras e arrays em scripts bash, que são os blocos de construção para técnicas de scripting de shell mais avançadas.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 93%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Declaração Básica de Variáveis

Nesta etapa, você aprenderá como declarar e usar uma variável básica em um script bash. Variáveis em scripts de shell Linux permitem que você armazene dados temporariamente e os referencie mais tarde em seu script.

Primeiro, vamos criar um diretório para nosso projeto e navegar até ele:

mkdir -p ~/project
cd ~/project

Agora, crie um script chamado variables.sh usando o editor de texto nano:

nano ~/project/variables.sh

Dentro do editor, digite o seguinte conteúdo:

#!/bin/bash

## Declaring a basic variable
BALLOON_COLOR="red"

## Displaying the variable value
echo "The balloon color is: $BALLOON_COLOR"

Neste script, declaramos uma variável chamada BALLOON_COLOR e atribuímos a ela o valor "red". O comando echo então exibe o valor desta variável.

Para salvar o arquivo no nano, pressione Ctrl+O, depois pressione Enter para confirmar. Para sair do nano, pressione Ctrl+X.

Agora, torne o script executável:

chmod +x ~/project/variables.sh

Este comando dá ao arquivo permissão de execução, permitindo que você o execute como um programa.

Finalmente, execute seu script:

./variables.sh

Você deve ver a seguinte saída:

The balloon color is: red

Isso mostra que sua variável foi declarada com sucesso e seu valor pode ser acessado usando o símbolo $ antes do nome da variável.

Declarando Variáveis Inteiras

Nesta etapa, você aprenderá como declarar e usar variáveis inteiras em scripts bash. A flag -i informa ao bash que a variável deve ser tratada como um inteiro, o que pode ser útil para operações numéricas.

Abra o script variables.sh novamente para editá-lo:

nano ~/project/variables.sh

Modifique o script para incluir uma variável inteira:

#!/bin/bash

## Declaring a basic string variable
BALLOON_COLOR="red"

## Declaring an integer variable
declare -i BALLOON_SIZE=10

## Displaying both variables
echo "The balloon color is: $BALLOON_COLOR"
echo "The balloon size is: $BALLOON_SIZE inches"

## Performing arithmetic with the integer variable
declare -i DOUBLE_SIZE=BALLOON_SIZE*2
echo "Double the size would be: $DOUBLE_SIZE inches"

Neste script atualizado:

  1. Mantivemos nossa variável de string original BALLOON_COLOR
  2. Adicionamos uma nova variável inteira BALLOON_SIZE usando a sintaxe declare -i
  3. Demonstramos como realizar operações aritméticas com variáveis inteiras

Salve o arquivo com Ctrl+O e Enter, depois saia do nano com Ctrl+X.

Agora execute o script novamente:

./variables.sh

Você deve ver a seguinte saída:

The balloon color is: red
The balloon size is: 10 inches
Double the size would be: 20 inches

A declaração -i permite que o bash reconheça que a variável deve ser tratada como um inteiro, tornando as operações aritméticas possíveis. Isso é particularmente útil para contadores, cálculos e processamento numérico em seus scripts.

Trabalhando com Variáveis de Array

Nesta etapa, você aprenderá como declarar e usar variáveis de array. Arrays permitem que você armazene múltiplos valores sob um único nome de variável, o que é útil ao lidar com coleções de dados relacionados.

Vamos editar nosso script novamente:

nano ~/project/variables.sh

Atualize o script para incluir uma variável de array:

#!/bin/bash

## Declaring a basic string variable
BALLOON_COLOR="red"

## Declaring an integer variable
declare -i BALLOON_SIZE=10

## Declaring an array variable
declare -a BALLOON_COLORS=("red" "green" "blue" "purple" "yellow")

## Displaying individual variables
echo "The balloon color is: $BALLOON_COLOR"
echo "The balloon size is: $BALLOON_SIZE inches"

## Displaying all array elements
echo "Available balloon colors are: ${BALLOON_COLORS[*]}"

## Displaying specific array elements
echo "The first color is: ${BALLOON_COLORS[0]}"
echo "The third color is: ${BALLOON_COLORS[2]}"

## Count of array elements
echo "Number of available colors: ${#BALLOON_COLORS[@]}"

Neste script atualizado:

  1. Mantivemos nossas variáveis existentes
  2. Adicionamos uma variável de array BALLOON_COLORS usando a sintaxe declare -a
  3. Mostramos diferentes maneiras de acessar elementos do array:
    • ${BALLOON_COLORS[*]} exibe todos os elementos
    • ${BALLOON_COLORS[0]} acessa o primeiro elemento (arrays em bash são indexados a partir de zero)
    • ${#BALLOON_COLORS[@]} fornece o número de elementos no array

Salve o arquivo com Ctrl+O e Enter, depois saia do nano com Ctrl+X.

Agora execute o script novamente:

./variables.sh

Você deve ver a seguinte saída:

The balloon color is: red
The balloon size is: 10 inches
Available balloon colors are: red green blue purple yellow
The first color is: red
The third color is: blue
Number of available colors: 5

Arrays são poderosos quando você precisa gerenciar coleções de dados relacionados. Eles permitem que você organize múltiplos valores e os acesse individualmente ou como um grupo. Isso é especialmente útil para gerenciar listas de itens, como nomes de arquivos, informações de usuário ou opções de configuração.

Manipulação e Expansão de Variáveis

Nesta etapa, você aprenderá como manipular e expandir variáveis de diferentes maneiras. Essas técnicas permitem que você modifique os valores das variáveis sem criar novas variáveis, o que é útil para processamento de texto e transformação de dados.

Vamos editar nosso script novamente:

nano ~/project/variables.sh

Atualize o script para demonstrar a manipulação de variáveis:

#!/bin/bash

## Declaring basic variables
NAME="linux"
MESSAGE="Hello, world!"
FILE_PATH="/home/user/documents/report.txt"

echo "Original values:"
echo "NAME = $NAME"
echo "MESSAGE = $MESSAGE"
echo "FILE_PATH = $FILE_PATH"

echo -e "\nVariable manipulation examples:"

## Convert to uppercase
echo "NAME in uppercase: ${NAME^^}"

## Convert to lowercase
UPPER_NAME="LINUX"
echo "UPPER_NAME in lowercase: ${UPPER_NAME,,}"

## Get string length
echo "Length of MESSAGE: ${#MESSAGE}"

## Extract substring (starting at position 7, 5 characters)
echo "Substring of MESSAGE: ${MESSAGE:7:5}"

## Replace part of string
echo "Replace 'world' with 'Linux': ${MESSAGE/world/Linux}"

## Extract filename from path
echo "Filename from path: ${FILE_PATH##*/}"

## Extract directory from path
echo "Directory from path: ${FILE_PATH%/*}"

## Default value if variable is unset
UNSET_VAR=""
echo "Default value example: ${UNSET_VAR:-default value}"

Este script demonstra vários métodos para manipular variáveis:

  1. ${NAME^^} - Converter para maiúsculas
  2. ${UPPER_NAME,,} - Converter para minúsculas
  3. ${#MESSAGE} - Obter o comprimento da string
  4. ${MESSAGE:7:5} - Extrair substring (posição e comprimento)
  5. ${MESSAGE/world/Linux} - Substituir parte da string
  6. ${FILE_PATH##*/} - Remover a correspondência mais longa do início (extrair nome do arquivo)
  7. ${FILE_PATH%/*} - Remover a correspondência mais curta do final (extrair diretório)
  8. ${UNSET_VAR:-default value} - Usar o padrão se a variável não estiver definida

Salve o arquivo com Ctrl+O e Enter, depois saia do nano com Ctrl+X.

Agora execute o script:

./variables.sh

Você deve ver uma saída semelhante a:

Original values:
NAME = linux
MESSAGE = Hello, world!
FILE_PATH = /home/user/documents/report.txt

Variable manipulation examples:
NAME in uppercase: LINUX
UPPER_NAME in lowercase: linux
Length of MESSAGE: 13
Substring of MESSAGE: world
Replace 'world' with 'Linux': Hello, Linux!
Filename from path: report.txt
Directory from path: /home/user/documents
Default value example: default value

Essas técnicas de manipulação de variáveis são extremamente úteis para processar dados de texto, extrair informações de strings e lidar com valores padrão em seus scripts.

Variáveis de Ambiente e Escopo de Variáveis

Nesta etapa final, você aprenderá sobre variáveis de ambiente, escopo de variáveis e como exportar variáveis para torná-las disponíveis para outros processos.

Crie um novo script chamado environment.sh:

nano ~/project/environment.sh

Adicione o seguinte conteúdo:

#!/bin/bash

## Displaying some common environment variables
echo "USER: $USER"
echo "HOME: $HOME"
echo "PATH: $PATH"
echo "PWD: $PWD"
echo "SHELL: $SHELL"

## Creating a local variable
LOCAL_VAR="This is a local variable"
echo "LOCAL_VAR: $LOCAL_VAR"

## Exporting a variable to make it available to child processes
export EXPORTED_VAR="This variable is exported"
echo "EXPORTED_VAR: $EXPORTED_VAR"

## Demonstrate how variables work in subshells
echo -e "\nVariable behavior in subshell:"
(
  echo "Inside subshell:"
  echo "  LOCAL_VAR: $LOCAL_VAR"
  echo "  EXPORTED_VAR: $EXPORTED_VAR"
  echo "  Creating subshell-only variable"
  SUBSHELL_VAR="This variable only exists in the subshell"
  echo "  SUBSHELL_VAR: $SUBSHELL_VAR"
)

echo -e "\nAfter subshell:"
echo "LOCAL_VAR: $LOCAL_VAR"
echo "EXPORTED_VAR: $EXPORTED_VAR"
echo "SUBSHELL_VAR: $SUBSHELL_VAR" ## This will be empty

## Creating a script to test export behavior
echo -e "\nCreating child script to test variable export..."
cat > ~/project/child_script.sh << 'EOF'
#!/bin/bash
echo "In child script:"
echo "EXPORTED_VAR: $EXPORTED_VAR"
echo "LOCAL_VAR: $LOCAL_VAR"
EOF

chmod +x ~/project/child_script.sh

## Run the child script
echo -e "\nRunning child script:"
./child_script.sh

Este script demonstra:

  1. Variáveis de ambiente comuns (USER, HOME, PATH, etc.)
  2. A diferença entre variáveis locais e exportadas
  3. Comportamento de variáveis em subshells (os parênteses criam um subshell)
  4. Como as variáveis exportadas são herdadas por processos filhos

Salve o arquivo com Ctrl+O e Enter, depois saia do nano com Ctrl+X.

Torne o script executável:

chmod +x ~/project/environment.sh

Agora execute o script:

./environment.sh

A saída mostrará como as variáveis se comportam em diferentes contextos:

  • Variáveis de ambiente são predefinidas pelo sistema
  • Variáveis locais existem apenas no script atual
  • Variáveis exportadas são passadas para processos filhos
  • Variáveis criadas em subshells não estão disponíveis no shell pai

Compreender o escopo de variáveis é crucial ao escrever scripts complexos que geram processos filhos ou incluem outros scripts. Isso ajuda você a gerenciar o fluxo de dados entre diferentes partes do seu sistema.

Resumo

Neste laboratório, você aprendeu os fundamentos da declaração e manipulação de variáveis em shell scripting Linux. Você explorou:

  • Declaração e uso básico de variáveis
  • Variáveis inteiras e operações aritméticas
  • Variáveis de array para armazenar coleções de dados
  • Técnicas de manipulação de variáveis para processamento de texto
  • Variáveis de ambiente e escopo de variáveis

Essas habilidades formam a base do shell scripting e são essenciais para automatizar tarefas em ambientes Linux. As variáveis permitem que você crie scripts mais dinâmicos e flexíveis, armazenando e processando dados durante a execução.

Agora você pode usar essas técnicas para:

  • Armazenar configurações em seus scripts
  • Processar entrada do usuário e conteúdo de arquivos
  • Manipular dados de texto e caminhos de arquivos
  • Compartilhar dados entre diferentes scripts e processos

À medida que você continua sua jornada em shell scripting Linux, descobrirá que dominar o uso de variáveis abre muitas possibilidades para criar ferramentas de automação poderosas e eficientes.