Bash Getopts

Bash Getopts
Às vezes, precisamos ler argumentos e opções de linha de comando em scripts de bash. Os argumentos da linha de comando podem ser facilmente lidos por variáveis ​​de argumento. Mas, para ler os argumentos da linha de comando e as opções, Bash usou um comando interno 'getopts'. Este comando pode ser usado para analisar opções curtas como '-a' ou '-1' e opções longas como '-Package-name'. Como o comando 'getopts' pode ser usado para analisar argumentos e opções da linha de comando são mostrados neste tutorial usando exemplos diferentes.

Sintaxe:

Getopts Optsstring Nome [args]

Opções:

Algumas opções de getopts principalmente usadas são mencionadas aqui.

Marcação Descrição
-o ou -Options Identifique a opção de um caractere.
-L ou -LONOTOPTIONS Identifique as opções de vários caracteres.
-n ou -name Relatório erros vindos do comando getopts
-Q ou -quiet Desative o relatório de erro
-T ou -teste Teste a versão getopts
-A ou - -Alternativo Permitir uma opção longa com um único '-'

Exemplo 1: Usando um único opção

Este exemplo mostra o uso muito simples do comando getopts. Crie um arquivo bash chamado 'getOpts1.Sh 'com o seguinte código para testar o código. Aqui, enquanto o Loop continuará para a opção do comando getopts. Declaração do caso verificará a opção. Se a opção for 'c', o script imprimirá 'minha cor favorita é azul'. Se a opção for 'f', o script imprimirá 'minha comida favorita é sorvete'. Se a opção for '-m', o script imprimirá 'meu filme favorito é Titanic'. Para qualquer outro valor de opção, "Você precisa usar: [-c] ou [-f] ou [-m]" irá imprimir.

#!/BIN/BASH
# Leia a opção e armazene na variável, opção $
enquanto a opção Getopts "CFM"; fazer
caso $ opção em
c) #para opção C
eco "minha cor favorita é azul"
;;
f) #para opção f
eco "minha comida favorita é sorvete"
;;
m) #para opção m
eco "Meu filme favorito é Titanic"
;;
\? ) #Para opção inválida
eco "você tem que usar: [-c] ou [-f] ou [-m]"
;;
ESAC
feito

Execute o script usando quatro opções, '-c', '-f', '-m' e '-k'.

$ BASH GETOPTS1.sh -c
$ BASH GETOPTS1.sh -f
$ BASH GETOPTS1.sh -m
$ BASH GETOPTS1.sh -k

Saída:

Exemplo 2: Usando a opção com um único argumento

Este exemplo mostra o uso do comando GOTOPTS com um argumento. Crie um arquivo bash chamado 'getOpts2.Sh 'com o seguinte código para testar o código. Aqui, ':' é usado com 'p' para definir que o comando assumirá o argumento com a opção. O script imprimirá o valor do argumento com outra string se o argumento com a opção '-p' fornecer no tempo de execução. Se alguma opção fornecerá em vez de '-p', ele mostrará uma mensagem de erro com o valor da opção. Se a opção '-p' fornecerá sem qualquer argumento que outra mensagem de erro imprimirá.

#!/BIN/BASH
enquanto getopts "P:" opte; fazer
caso $ opt em
p) #print o valor do argumento
eco "eu gosto de $ optarg programação"
;;
\? )
#Print Option Erro
eco "Opção inválida: $ optarg" 1> & 2
;;
:)
#Print Argument Erro
eco "Opção inválida: $ optarg requer um argumento" 1> & 2
;;
ESAC
feito

Execute o script com a opção -p e o valor do argumento 'bash', com apenas opção -p e com a opção -t.

$ BASH GOTOPTS2.sh -p bash
$ BASH GOTOPTS2.sh -p
$ BASH GOTOPTS2.sh -t

Saída:

Exemplo 3: Usando a opção com vários argumentos

Este exemplo mostra os usos do comando GOTOPTS com vários argumentos. Crie um script bash chamado GRTOPTS3.SH com o seguinte código para testar o script. De acordo com o script, os valores de argumento separados por vírgula serão fornecidos da linha de comando.

Aqui, a opção '-f' e a variável ifs são usados ​​para dividir os argumentos e armazenados em uma matriz, $ numarr. Se os argumentos separados por vírgula serão fornecidos, ele imprimirá o número total de argumentos. Duas opções apoiarão o comando. A soma dos valores do argumento será calculada e impressa se a opção '-a' fornecerá os argumentos. A multiplicação dos valores do argumento será calculada e impressa se a opção '-m' fornecerá os argumentos.

#!/BIN/BASH
enquanto getopts "A: M:" opte; fazer
set -f; Ifs = ','
NUMARR = ($ 2)
eco "Número total de argumentos = $ #numarr [@]"
Caso $ OPT em
a) resultado = 0
para i em "$ numarr [@]"; fazer
((resultado = $ resultado+$ i))
feito
eco "a soma de todos os argumentos = $ resultado" ;;
m) resultado = 1
para i em "$ numarr [@]"; fazer
((resultado = $ resultado*$ i))
feito
eco "a multiplicação de todos os argumentos = $ resultado" ;;
*) eco "opção ou argumento inválido"
saída 1
ESAC
feito

Execute os scripts com a opção '-a' e três argumentos, com a opção '-m' e três argumentos e a opção '-t' sem nenhum argumento.

$ BASH GOTOPTS3.SH -A 3,2,5
$ BASH GOTOPTS3.sh -m 3,2,5
$ BASH GOTOPTS3.sh -t

Saída:

Exemplo-4: Usando várias opções e argumentos

Este exemplo mostra o uso do comando GOTOPTS com várias opções e vários argumentos. Crie um arquivo bash chamado 'getOpts4.SH com o seguinte código para testar o exemplo. Aqui, duas opções funcionarão com dois argumentos separadamente. Se nenhuma das opções fornecerá, ele imprimirá uma mensagem de erro.

#!/BIN/BASH
enquanto getopts "n: m:" opt; fazer
Caso $ OPT em
n)
#Lerendo o primeiro argumento
eco "o nome do aluno é $ optarg"> & 2
;;
m)
#Leitura do segundo argumento
eco "e as marcas é $ optarg"> & 2
;;
*)
#Mensagem de erro de impressão
eco "opção ou argumento inválido $ optarg"
;;
ESAC
feito

Quando o script será executado pela opção '-n' com a opção 'ella' e '-m' com 85, então duas declarações de caso serão verdadeiras e imprimirão duas saídas. Quando o script será executado apenas pela opção '-n' com 'ella', apenas uma declaração de caso será verdadeira e imprimirá uma saída. Quando o script é executado pela opção '-p', uma mensagem de erro será impressa.

$ BASH GOTOPTS4.sh -n ella -m 85
$ BASH GOTOPTS4.sh -n ella
$ BASH GOTOPTS4.sh -p ella

Conclusão

Os usos básicos do comando 'getopts' são mostrados neste tutorial usando os exemplos acima. Espero que, depois de praticar este tutorial, você poderá usar as opções e argumentos da linha de comando em seu script Bash.