Exemplo Linux “Getopts”

Exemplo Linux “Getopts”
"Getopts" é um comando muito útil no Linux, que é incorporado principalmente aos scripts do Bash para levar bandeiras e argumentos como entradas do usuário. Para elaborar ainda mais o uso deste comando no Linux Mint 20, estaremos compartilhando com você dois exemplos diferentes de seu uso neste artigo.

Exemplos "getopts" no Linux Mint 20:

Para um entendimento mais fácil e melhor do comando "getopts" no Linux Mint 20, projetamos para você dois cenários de exemplo. Antes de seguir para esses cenários, você pode conferir o manual de ajuda do comando "getopts" no terminal Linux Mint 20 para que você possa obter a idéia básica sobre a sintaxe deste comando. Você pode ver o manual de ajuda deste comando executando o comando "help":

$ getopts - -help

O manual de ajuda do comando "getopts" conterá uma breve descrição do uso deste comando junto com sua sintaxe, como mostrado na imagem abaixo:

Agora, quando passamos pelo manual de ajuda do comando "Getopts", podemos prosseguir com nossos cenários de exemplo da seguinte maneira:

Caso # 1: Passando bandeiras para um script bash para sua execução no Linux Mint 20:

Neste exemplo, estaremos criando um script bash que levará uma bandeira como entrada do usuário junto com o comando de execução desse script de bash. Dependendo do valor da bandeira fornecida, a respectiva saída será exibida. A descrição detalhada das etapas envolvidas nesse cenário é a seguinte:

Etapa # 1: Escrevendo um script Bash:

Primeiro, escreveremos um script de bash em nosso diretório doméstico. Nomeamos este arquivo como getopts.sh. O conteúdo deste script bash é mostrado na imagem abaixo. No script Bash mostrado abaixo, temos um loop "while" que é executado no comando "getopts". Aqui, este comando "getopts" é usado para pegar uma bandeira como entrada do usuário. O valor dessa bandeira pode ser "r", "y" ou "g" representando as cores "vermelho", "amarelo" e "verde", respectivamente, respectivamente. A variável "Opção" será usada para armazenar o valor da bandeira fornecida pelo usuário. Em seguida, usamos uma declaração de "caso" sobre o valor da bandeira fornecida que exibirá uma mensagem personalizada, dependendo do valor do sinalizador "opção". Finalmente, fechamos o bloco "Case" com a declaração "ESAC" e o bloco "fazer" com a declaração "feita".

Etapa 2: testando o script Bash:

Depois de criar e salvar nosso script bash, agora é hora de executá -lo. Estaremos testando todos os casos um por um. Primeiro, executaremos o script Bash com a bandeira "-R" para ver se ele produz a saída correta ou não da seguinte maneira:

$ bash getopts.sh -r

A saída personalizada do nosso script bash com o sinalizador "-r" é mostrado na imagem abaixo:

Agora, executaremos o script Bash com a bandeira "-y" para ver se produz a saída correta ou não da seguinte maneira:

$ bash getopts.tímido

A saída personalizada do nosso script bash com a bandeira "-y" é mostrada na imagem abaixo:

Agora, executaremos o script Bash com a bandeira "-g" para ver se produz a saída correta ou não da seguinte maneira:

$ bash getopts.sh -g

A saída personalizada do nosso script bash com o sinalizador "-g" é mostrado na imagem abaixo:

Finalmente, vamos executar nosso script bash com qualquer bandeira aleatória, eu.e. Uma bandeira que não é válida ou uma bandeira que não é mencionada em nosso script bash diz "-a" da seguinte maneira:

$ bash getopts.sh -a

Desta vez, o caso padrão do nosso script bash foi executado, que exibiu uma mensagem de erro desde que usamos uma bandeira inválida.

Caso # 2: Passando bandeiras junto com argumentos para um script bash para sua execução no Linux Mint 20:

Neste exemplo, estaremos criando um script de bash que levará uma bandeira e um argumento como entrada do usuário junto com o comando de execução desse script Bash. Dependendo do valor da bandeira e do argumento fornecidos, a respectiva saída será produzida. A descrição detalhada das etapas envolvidas nesse cenário é a seguinte:

Etapa # 1: Escrevendo um script Bash:

O script bash usado para este caso é mostrado na imagem abaixo e é muito semelhante ao que criamos para o nosso caso nº 1. A única diferença é que desta vez, não estamos permitindo várias bandeiras. O usuário só pode entrar na bandeira "-r". No entanto, o "::" Cólon após a bandeira "R" no script Bash indica que o usuário também deve fornecer um argumento junto com a bandeira. Este argumento será armazenado na variável "optarg" padrão. Para exibir o valor do argumento fornecido com o comando "Echo", usamos um símbolo "$" antes da variável "optarg".

Etapa 2: testando o script Bash:

Depois de salvar este script de bash, agora é a hora de testá -lo. Novamente, estaremos testando todos os casos um por um. Primeiro, executaremos o script Bash com a bandeira “-R” e um argumento de amostra “preto” para ver se produz a saída correta ou não da seguinte maneira:

$ bash getopts.sh -r preto

A saída personalizada do nosso script bash com o sinalizador "-r" e o argumento "preto" é mostrado na imagem abaixo:

Agora, testaremos este script com uma bandeira inválida e um argumento válido da seguinte maneira:

$ bash getopts.sh -a preto

Desta vez, o caso padrão do nosso script bash foi executado, que exibiu uma mensagem de erro desde que usamos uma bandeira inválida.

Agora, vamos executar este script de bash enquanto omitirá a bandeira e apenas passando um argumento válido da seguinte maneira:

$ bash getopts.Sh preto

Desta vez, nenhuma saída será produzida no terminal ou, em outras palavras, nosso script bash não será executado, pois pulamos uma bandeira obrigatória.

Por fim, executaremos esse script de bash enquanto omitiremos o argumento e apenas passando a bandeira válida da seguinte maneira:

$ bash getopts.sh -r

Novamente desta vez, o caso padrão do nosso script bash foi executado, que exibiu uma mensagem de erro desde que ignoramos o argumento obrigatório.

Conclusão:

Esses dois exemplos são uma representação muito agradável do uso do comando "getopts" em um script bash no Linux Mint 20. Você pode até criar cenários mais complexos em Bash e combiná -los com o comando "getopts" para levar mais de um argumento e sinalizadores do usuário como entrada.