Argumentos e Opções de Scripts ($@, $#, getopts)
Aprenda a passar argumentos para seus scripts e analisar opções da linha de comando usando variáveis especiais e 'getopts'.
Argumentos e Opções de Scripts ($@, $#, getopts) é uma aula grátis de Linux Command Line & Bash Scripting Mastery no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Linux Command Line & Bash Scripting Mastery, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Linux Command Line & Bash Scripting Mastery inclui 4 aulas no total.
Argumentos de scripts: por que usá-los?
Você já usou um comando como ls -l ou cp file1 file2? -l, file1 e file2 são todos argumentos! Eles informam ao comando o que fazer ou sobre o que atuar.
Nos scripts Bash, os argumentos tornam seus scripts flexíveis. Em vez de codificar valores diretamente, seu script pode aceitar entradas diretamente da linha de comando quando é executado.
Acessando argumentos posicionais
Quando você executa um script com argumentos, o Bash os atribui automaticamente a variáveis especiais chamadas parâmetros posicionais.
- O primeiro argumento é
$1. - O segundo argumento é
$2. - E assim por diante, até
$9.
Para argumentos além do nono, use chaves, como em ${10}, ${11} etc. Essas variáveis contêm os valores passados ao seu script.
Demonstração: argumentos posicionais
Vamos ver como acessar esses argumentos em um script. Salve isto como greet.sh e execute-o com ./greet.sh Alice Bob.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"`$0` e `$#`: informações do script
O Bash fornece mais algumas variáveis especiais que oferecem informações sobre o próprio script e seus argumentos:
$0: contém o nome do script que está sendo executado. É útil para mensagens de erro ou registros.$#: essa variável contém o número total de argumentos posicionais passados ao script.
Essas variáveis ajudam a tornar seus scripts mais robustos e fáceis de usar.
Demonstração: `$0` e `$#`
Execute este script com diferentes quantidades de argumentos, por exemplo, ./info.sh one two three ou simplesmente ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` versus `$*`: todos os argumentos
Às vezes, você precisa se referir a todos os argumentos de uma só vez. O Bash oferece duas formas:
$@: é expandido para argumentos separados. Quando colocado entre aspas duplas ("$@"), cada argumento permanece uma palavra distinta, mesmo que contenha espaços. Geralmente, essa é a forma preferida para laços.$*: é expandido para uma única string com todos os argumentos. Quando colocado entre aspas duplas ("$*"), todos os argumentos são combinados em uma única palavra, separados pelo primeiro caractere deIFS(separador interno de campos, geralmente um espaço).
Use sempre "$@" ao percorrer argumentos para preservar os espaços!
Demonstração: percorrendo com `"$@"`
Este script demonstra como "$@" lida corretamente com argumentos que contêm espaços. Execute-o assim: ./loop_args.sh hello "world wide" web
#!/bin/bash
echo "Processing arguments with \"$@\":"
for arg in "$@"; do
echo " Argument: [$arg]"
done
echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
echo " Argument: [$arg]"
doneOpções: além dos argumentos posicionais
Os argumentos posicionais são ótimos para casos simples, mas e se seu script precisar de sinalizadores opcionais ou parâmetros nomeados, como -v para modo detalhado ou -f filename?
É nesse ponto que entram as opções de linha de comando. Elas tornam os scripts mais flexíveis e fáceis de usar, permitindo que os usuários especifiquem configurações em qualquer ordem.
O Bash fornece o comando getopts especificamente para analisar esses tipos de opções.
Sintaxe de `getopts`: `optstring`
A sintaxe básica de getopts é: getopts optstring variable.
optstring: uma string com caracteres de opção válidos. Se uma opção exigir um argumento, como-f filename, coloque dois-pontos após o caractere, por exemplo,f:.variable: um nome de variável no qualgetoptsarmazenará o caractere da opção processada no momento, por exemplo,opt.
getopts também define OPTARG para os argumentos das opções e OPTIND para o índice do próximo argumento.
Demonstração: `getopts` básico
Este script processa as opções -v (modo detalhado) e -f (arquivo). Tente executá-lo: ./options.sh -v -f mydata.txt -x ou ./options.sh -vf mydata.txt
#!/bin/bash
while getopts "vf:" opt; do
case $opt in
v)
echo "Verbose mode enabled."
;;
f)
echo "File specified: $OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
doneVerificação rápida: variáveis de argumentos
Considere o script a seguir e a forma como ele é executado:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneSe você executar: ./myscript.sh "Hello World" 123
Qual será a saída?
Revisão: argumentos e opções
Parabéns! Você aprendeu a tornar seus scripts Bash muito mais versáteis:
- Argumentos posicionais: use
$1,$2etc. para acessar os argumentos diretamente. - Variáveis especiais:
$0para o nome do script,$#para a quantidade de argumentos e"$@"para percorrer todos os argumentos com segurança. - Opções de linha de comando: use
getoptspara analisar opções nomeadas, como-v, e seus argumentos, como-f filename, tornando seus scripts mais robustos e fáceis de usar.
Pratique o uso desses recursos em seus próprios scripts para criar ferramentas de linha de comando poderosas e flexíveis!
Perguntas Frequentes
A aula “Argumentos e Opções de Scripts ($@, $#, getopts)” é grátis?
Sim — o texto completo de “Argumentos e Opções de Scripts ($@, $#, getopts)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Linux Command Line & Bash Scripting Mastery, atualize para CoddyKit PRO. O curso de Linux Command Line & Bash Scripting Mastery inclui 4 aulas no total.
O que vou aprender em “Argumentos e Opções de Scripts ($@, $#, getopts)”?
Aprenda a passar argumentos para seus scripts e analisar opções da linha de comando usando variáveis especiais e 'getopts'. Você pratica Linux Command Line & Bash Scripting Mastery com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Linux Command Line & Bash Scripting Mastery?
Nenhuma experiência prévia é necessária. Linux Command Line & Bash Scripting Mastery no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Argumentos e Opções de Scripts ($@, $#, getopts)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Linux Command Line & Bash Scripting Mastery?
Sim. Cada aula de Linux Command Line & Bash Scripting Mastery inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Estruturas de Repetição (for, while)
- Funções em Scripts Bash
- Argumentos e Opções de Scripts ($@, $#, getopts)
- A Instrução case e a Correspondência de Padrões