Bash:
Lendo argumentos da linha de comando
Como fazer:
#!/bin/bash
echo "Primeiro argumento: $1"
echo "Segundo argumento: $2"
echo "Todos os argumentos: $@"
echo "Número de argumentos: $#"Rodando o script com bash meuscript.sh arg1 arg2 teríamos esta saída:
Primeiro argumento: arg1
Segundo argumento: arg2
Todos os argumentos: arg1 arg2
Número de argumentos: 2Aprofundando:
Os argumentos da linha de comando são uma funcionalidade tão antiga quanto os próprios shells Unix. Embora existam outras ferramentas modernas como o getopts e programas externos como argparse para Python, a leitura direta dos parâmetros $1, $2, $@, $* e $# persiste devido à sua simplicidade e praticidade em scripts.
O $1, $2, são posições dos argumentos. $@ e $* retornam todos argumentos, mas diferem quando usados entre aspas -"$@" mantém os argumentos separados, enquanto "$*" os considera uma string única. $# fornece o número total de argumentos passados.
Uma implementação com getopts permite um manuseio mais sofisticado de opções com chaves (como -a ou --argumento), o que seria assim:
#!/bin/bash
while getopts "a:b:" opt; do
case $opt in
a) echo "Opção A com valor $OPTARG" ;;
b) echo "Opção B com valor $OPTARG" ;;
\?) echo "Opção inválida: -$OPTARG" ;;
esac
doneCom a execução bash meuscript.sh -a umValor -b outroValor, teremos:
Opção A com valor umValor
Opção B com valor outroValorVeja também:
- Advanced Bash-Scripting Guide
- Bash Reference Manual
- ExplainShell - para explicar linhas de comando
- ShellCheck - para encontrar erros em seus scripts Bash