Trabalhando com Variáveis de Shell

ShellBeginner
Pratique Agora

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.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir 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 81%. Ele recebeu uma taxa de avaliação positiva de 99% dos alunos.

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.

  1. Abra um terminal em seu WebIDE (VS Code).

  2. Crie um novo arquivo chamado variables.sh no diretório /home/labex/project:

    touch /home/labex/project/variables.sh
  3. Abra o arquivo variables.sh no 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.
  4. Salve o arquivo.

  5. Torne o script executável:

    chmod +x /home/labex/project/variables.sh
  6. Execute o script:

    ./variables.sh

    Você 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 greeting sã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.

  1. Abra o arquivo variables.sh no WebIDE.

  2. 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"
  3. Salve o arquivo.

  4. Execute o script:

    ./variables.sh

    Você 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.

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 (``).

  1. Abra o arquivo variables.sh no WebIDE.

  2. 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"
  3. Salve o arquivo.

  4. Execute o script:

    ./variables.sh

    Você 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 minutes

    Neste exemplo:

    • $(date +"%Y-%m-%d") executa o comando date e captura sua saída.
    • $(ls) executa o comando ls e armazena a lista de arquivos.
    • $(uptime -p) executa o comando uptime com a opção -p para 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.

  1. Crie um novo arquivo chamado arithmetic.sh no diretório /home/labex/project:

    touch /home/labex/project/arithmetic.sh
  2. Abra o arquivo arithmetic.sh no 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"
  3. Salve o arquivo.

  4. Torne o script executável:

    chmod +x /home/labex/project/arithmetic.sh
  5. Execute o script:

    ./arithmetic.sh

    Você 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: 4

    Este 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.

  1. Crie um novo arquivo chamado environment.sh no diretório /home/labex/project:

    touch /home/labex/project/environment.sh
  2. Abra o arquivo environment.sh no 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"
  3. Salve o arquivo.

  4. Torne o script executável:

    chmod +x /home/labex/project/environment.sh
  5. Execute o script:

    ./environment.sh

    Você 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 com unset.

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.