Como você passa um argumento nomeado em um script de shell?

Como você passa um argumento nomeado em um script de shell?
Os scripts do shell no Linux permitem escrever programas com valores e programas codificados que podem levar as entradas do usuário em tempo de execução. Essas entradas do usuário são conhecidas como parâmetros ou argumentos. Todos nós geralmente estamos familiarizados com os argumentos normais passantes para os scripts de shell. No entanto, às vezes você pode sentir a necessidade de passar "argumentos nomeados" para seus scripts de shell. Este artigo o guiará mais sobre o que exatamente é nomeado argumentos e suas necessidades em scripts de shell. Depois disso, compartilharemos um extenso exemplo de aprovação dos argumentos nomeados para um script de shell no Ubuntu 20.04.

Argumentos nomeados em scripts de shell no Ubuntu 20.04

Até agora, entendemos claramente que podemos escrever facilmente esses scripts de shell no Ubuntu 20.04 que são capazes de assumir argumentos como entrada do usuário enquanto executa esses scripts do terminal. No entanto, um tipo diferente de argumentos conhecidos como "argumentos nomeados" também é comumente usado dentro dos scripts do shell. Um argumento nomeado é o que é simbolizado por um par de "valor-nomes". Este par de “valor-nomes” é definido no script do shell, e o argumento correspondente é passado da mesma maneira enquanto executa o script ao passar os argumentos normais.

Então, qual é o significado de usar os argumentos nomeados em scripts de shell? Bem, às vezes, você define os argumentos em seus scripts de shell, mas enquanto executa esses scripts, pode não necessariamente precisar fornecer todos esses argumentos. Os argumentos nomeados permitem pular os valores de tantos desses argumentos que você quiser ao executar seu script. Nesse caso, se você tivesse usado os argumentos normais, seu sistema teria renderizado uma mensagem de erro e não teria permitido que você continuasse com a execução do seu script se você tivesse pulado algum argumento predefinido em seu script.

Além disso, às vezes, você também pode mudar a ordem de passar os argumentos enquanto executa um script de shell, eu.e., Você passa os argumentos em ordem aleatória, em vez da que é seguida ao declarar as variáveis ​​dentro do seu script de shell. Os argumentos nomeados permitem facilmente você fazer isso, enquanto por outro. Portanto, você pode dizer que os argumentos nomeados fornecem mais flexibilidade aos usuários enquanto fornecem entradas em vez de restringi -los.

Agora, quando você perceber a importância de usar os argumentos nomeados em scripts de shell, vamos ver como podemos usar esses argumentos dentro de um script de shell em um Ubuntu 20.04 Sistema.

Exemplo de aprovação argumentos nomeados para um script de shell no Ubuntu 20.04

Para transmitir argumentos nomeados para um script de shell no Ubuntu 20.04, projetamos um script de shell que é mostrado na imagem abaixo. Estaremos executando este script de shell com diferentes argumentos ou valores de entrada nesta seção.

Neste script de shell, usamos a função "getopts" interna no shell dentro de um loop enquanto. Esta função basicamente toma parâmetros nomeados como entrada do usuário. Então, definimos três casos diferentes, eu.e., “N, a e g” correspondendo às nossas variáveis ​​“nome, idade e sexo”, respectivamente. Esses casos são definidos contra a variável "Flag" sobre a qual nossa declaração de caso-ESAC será executada. A declaração de caso-ESAC no shell é basicamente um equivalente à declaração de interruptor em c. Então, dentro do bloco Case-ESAC, listamos todos os três casos que foram declarados anteriormente, eu.e., n, a e g. Contra cada caso, declaramos uma variável que é igual ao argumento fornecido pelo usuário como uma entrada ao executar o script. Cada argumento fornecido pelo usuário será atribuído à variável relevante sempre que este script será executado. Em seguida, finalmente temos três comandos "eco" que estão lá para imprimir os valores do nome, idade e gênero das variáveis, respectivamente.

Depois de projetar esse script, primeiro o executaremos com argumentos normalmente nomeados na ordem correta da seguinte forma:

$ Bash nomeado.sh -n aqsa -a 27 -g fêmea

Aqui, nomeado.SH representa o nome do nosso script de shell. Além disso, você pode ver neste comando que listamos as bandeiras primeiro, seguidas por seus respectivos argumentos a serem passados. Além disso, você pode notar claramente que passamos esses argumentos na ordem exata, pois foram definidos em nosso script de shell.

Agora, quando esse script do shell for executado, você poderá ver os valores atribuídos a todos os parâmetros nomeados no terminal, como mostrado na imagem abaixo:

Depois de executar esse script no fluxo normal, podemos experimentar um pequeno experimento executando esse script do shell com os mesmos valores de entrada, mas em uma ordem ligeiramente diferente, conforme mostrado no comando a seguir:

$ Bash nomeado.sh -n aqsa -g fêmea -a 27

Você pode ver neste comando que mudamos a ordem dos argumentos de gênero e idade daquele que foi definido inicialmente no script de shell. Agora, tentaremos descobrir se esses valores são atribuídos corretamente aos nossos argumentos nomeados ou não.

Quando este comando for executado, você poderá ver em sua saída que, independentemente da ordem em que os argumentos sejam passados ​​ao executar o script do shell, eles ainda serão atribuídos às variáveis ​​corretas, como mostrado na imagem abaixo:

Em algumas situações, um usuário pode não querer revelar sua idade. Nessa situação, ele/ela executará este script da Shell da seguinte maneira:

$ Bash nomeado.sh -n aqsa -g fêmea

Na saída deste script de shell, quando é executado com os argumentos mostrados acima, você pode ver claramente que nosso sistema não gerou nenhuma mensagem de erro; em vez.

Da mesma maneira, você também pode tentar pular a variável de gênero, fornecendo apenas o valor para a variável de nome da maneira mostrada abaixo:

$ Bash nomeado.sh -n aqsa

A saída correspondente para este comando é mostrada na seguinte imagem:

Finalmente, tentaremos executar este script sem fornecer nenhum argumento da seguinte maneira:

$ Bash nomeado.sh

Novamente, você pode ver na saída a seguir que nenhuma mensagem de erro é gerada; Em vez disso, nosso script executou com sucesso, mesmo sem argumentos fornecidos.

Conclusão

A partir do exemplo detalhado discutido neste tutorial, podemos concluir que ele ainda será executado com sucesso, independentemente da ordem dos argumentos nomeados fornecidos a um script de shell. Além disso, mesmo que você não forneça nenhum argumento ao seu script, ele ainda poderá ser executado sem nenhum erro. No entanto, a única coisa que você precisa ter cuidado ao passar argumentos nomeados é usar a bandeira correta seguida por seu valor correspondente ao executar seu script de shell.