Lendo argumentos da linha de comando

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: 2

Aprofundando:

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
done

Com a execução bash meuscript.sh -a umValor -b outroValor, teremos:

Opção A com valor umValor
Opção B com valor outroValor

Veja também: