Bash script – Variáveis especiais
Neste artigo, vamos explorar algumas variáveis especiais na linguagem de programação BASH. Essas variáveis são de grande importância na programação com BASH, e compreender o propósito de cada uma delas é fundamental para quem deseja programar eficazmente nesta linguagem. Apesar de serem conceitos básicos, é essencial compreendê-los completamente. Vamos descrever cada uma dessas variáveis uma a uma e explicar para que servem. Além disso, no final do artigo, forneceremos scripts de exemplo que demonstram como utilizá-las em situações reais.
Variáveis Especiais
As variáveis especiais do BASH são variáveis apenas de leitura, o que significa que só podemos obter os seus valores; não é possível atribuir-lhes valores diretamente. Quando criamos variáveis para uso em nossos scripts, é importante lembrar que não podemos dar-lhes os mesmos nomes dessas variáveis especiais. Os valores dessas variáveis são definidos internamente pelo BASH, dependendo se estão em tempo de execução de um script ou durante a inicialização do mesmo.
Aqui estão as variáveis especiais do BASH:
- $: Esta variável contém todos os valores dos “argumentos” que foram passados ao script quando ele foi chamado pela linha de comando. Esses valores são separados por espaços. Quando usamos aspas “$“, esta variável é expandida para uma única string “$1 $2 $n” com os argumentos separados por espaços (o primeiro caractere da variável $IFS).
- $@: Esta variável contém todos os valores dos “argumentos” que foram passados ao script quando ele foi chamado pela linha de comando. Quando usamos aspas “$@”, esta variável é expandida para várias strings “$1”, “$2”, “$n”.
- $#: Esta variável contém o número de argumentos passados ao script. A contagem começa em um e não em zero. É um número na base decimal.
- $?: Esta variável contém o valor de retorno do último comando executado no script em modo encadeado “pipeline”. É importante para verificar se um comando foi bem-sucedido ou não.
- $$: Esta variável contém o valor do ID do próprio processo do script. Pode ser usado para construir uma lógica de comunicação entre processos, identificando cada processo pelo seu ID.
- $!: Esta variável contém o valor do ID do último comando executado de forma assíncrona. Embora seja cedo para explorar este conceito em detalhe neste artigo, pretendo abordá-lo em artigos futuros.
- $0: Esta variável contém o nome pelo qual o próprio script foi chamado.
- $_: Esta variável, no início, contém o caminho e o nome do script ou shell pelo qual foi chamado na linha de comando. Depois, durante a execução do script, contém o valor do último argumento do último comando executado. Além disso, esta variável é exportada para o ambiente.
- $1, $2, $3, …: Estas variáveis contêm o valor de cada argumento passado ao script. A variável $1 contém o valor do primeiro argumento, a variável $2 contém o valor do segundo argumento, e assim por diante.
Exemplos de Utilização
Aqui estão alguns exemplos de scripts que demonstram como usar essas variáveis especiais em ação:
Script 1: Utilizando $*, $# e $1, $2, $3
#!/bin/bash
# var_especiais_ex_1.sh
# Este script escreve no ecrã o número de argumentos
# e os quatro primeiros argumentos passados ao script,
# bem como escreve o que a variável $@ contém.
# Escrever o que a variável $@ contém.
echo "A variável contém: $@"
# Número de argumentos
echo "Foram passados ao script $# argumentos"
# Argumentos
echo "O argumento um é: $1"
echo "O argumento dois é: $2"
echo "O argumento três é: $3"
echo "O argumento quatro é: $4"
Script 2: Utilizando $_
#!/bin/bash
# var_especiais_ex_2.sh
# Este script demonstra como funciona a variável $_
# Escrever a variável $_ no início do script
echo "A variável contém: $_"
# Escrever uma linha com traços
echo "---------------------"
# Escrever a variável $_ novamente
echo "A variável contém: $_"
Script 3: Utilizando $$ e $0
#!/bin/bash
# var_especiais_ex_3.sh
# Este script demonstra como funciona a variável $,
# bem como a variável $0.
# Escrever a variável $ que escreve o ID do processo
echo "O ID do processo é: $$"
# Escrever uma linha vazia
echo
# Escrever a variável $0
echo "A variável contém: $0"
Script 4: Utilizando $?
#!/bin/bash
# var_especiais_ex_4.sh
# Este script demonstra como funciona a vari
ável $?.
# Executar o comando ls -l para listar os ficheiros
# no diretório corrente.
ls -l
# Escrever a variável $? com o retorno do comando anterior
echo "O retorno do comando é: $?"
# Executar o comando ls -l para listar os ficheiros
# em um diretório inexistente a fim de provocar um erro.
ls -l /dev/carros/velhos
# Escrever a variável $? com o retorno do comando anterior
echo "O retorno do comando é: $?"
Script 5: Utilizando $!
#!/bin/bash
# var_especiais_ex_5.sh
# Este script demonstra como funciona a variável $!.
# Executar o comando ls -l de forma assíncrona para
# listar os ficheiros no diretório corrente.
ls -l > /dev/null &
# Escrever a variável $! com o ID do último
# programa executado assincronamente.
echo "O ID do comando é: $!"
Conclusão
Este artigo introduziu algumas das variáveis especiais mais importantes na linguagem de programação BASH. Compreender e experimentar esses conceitos simples é fundamental para construir habilidades mais avançadas em BASH. À medida que sua compreensão da linguagem aumenta, você será capaz de realizar tarefas mais complexas e eficazes com BASH.
Se tiver dúvidas ou ideias que queira discutir sobre BASH, sinta-se à vontade para compartilhá-las nos comentários. Pratique, experimente e compartilhe seu conhecimento com outros entusiastas de BASH. Fique atento para mais artigos nesta série que explorarão outros aspectos fascinantes da linguagem BASH.