Controle de Argumentos no Shell: Como Capturar e Processar Parâmetros em Scripts Bash
Capturar argumentos passados pela linha de comando permite criar scripts dinâmicos e reutilizáveis sem a necessidade de alterar o código-fonte a cada execução. No Bash, isso é feito por meio das variáveis posicionais ($1, $2, etc.), que recebem os valores informados pelo usuário no momento da chamada. A seguir, veja como validar e utilizar esses parâmetros de entrada com segurança.
Bash
#!/bin/bash
# Script para processamento de parâmetros posicionais de entrada
# 1. Validação básica: verifica se o número mínimo de argumentos ($#) foi fornecido
if [ $# -lt 2 ]; then
echo "Erro: Parâmetros insuficientes!"
echo "Uso correto: $0 <nome_usuario> <ambiente>"
exit 1
fi
# 2. Captura dos parâmetros posicionais em variáveis nomeadas
USUARIO="$1"
AMBIENTE="$2"
PORTA="${3:-8080}" # Valor padrão (8080) caso o 3º parâmetro não seja informado
echo "=== Configuração do Deploy ==="
echo "Executando script: $0"
echo "Usuário responsável: $USUARIO"
echo "Ambiente de destino: $AMBIENTE"
echo "Porta configurada: $PORTA"
Exemplo de uso e execução no terminal:
Bash
# Execução informando os dois parâmetros obrigatórios
./deploy.sh admin production
# Execução passando também o terceiro parâmetro opcional
./deploy.sh admin production 9090
Pontos-chave
- Variáveis Posicionais (
$1a$9): O índice representa a ordem exata do argumento passado no terminal;$0armazena o próprio nome do script executado. - Argumentos Acima de 9: Para acessar o décimo parâmetro em diante, utilize obrigatoriamente a sintaxe com chaves (ex:
${10}), pois$10é interpretado pelo Shell como$1seguido do caractere0. - Contagem de Parâmetros (
$#): A variável especial$#retorna o número total de argumentos passados, sendo ideal para criar validações iniciais no script. - Atribuição de Valor Padrão: A sintaxe
${3:-8080}define um valor fallback padrão para a variável caso o parâmetro posicional correspondente não tenha sido preenchido. - Tratamento de Argumentos com Espaço: Passe argumentos que contêm espaços entre aspas simples ou duplas na linha de comando (ex:
./script.sh "Maria Silva" dev) para evitar que o Shell os divida em múltiplos parâmetros.
