Como Usar Argumentos de Linha de Comando em um Script Bash

Introdução

Nós já examinado como passar argumentos de linha de comando para um bash script. Neste tutorial, vamos dar uma olhada em como podemos usar esses argumentos dentro do script bash.,

ler Mais:

Como Passar Argumentos de Linha de Comando para o Script Bash

Explorar diferentes maneiras de passar os argumentos de linha de comando para o script bash durante o tempo de execução
Leia mais →

Como Usar o cd de Comando no Bash Scripts

Saiba como usar o comando cd no Linux Bash Scripts.,
Leia mais →

a Leitura de Saída de um Comando Em uma Matriz em Bash

Aprender algumas maneiras para salvar multi-saída de linha para um Bash matriz
Leia mais →

a Entrada de Processamento

Vamos dar uma olhada nas diferentes maneiras de processar os argumentos passados para um bash script dentro do script.

2, 1. Parâmetros posicionais

argumentos passados a um script são processados na mesma ordem em que são enviados., A indexação dos argumentos começa em um, e o primeiro argumento pode ser acessado dentro do script usando $1. Da mesma forma, o segundo argumento pode ser acessado usando $2, e assim por diante. O parâmetro posicional refere-se a esta representação dos argumentos usando sua posição.

tomemos um exemplo do seguinte script, userReg-posicional-parâmetro.,sh, que imprime nome de usuário, idade e nome completo nessa ordem:

echo "Username: $1";echo "Age: $2";echo "Full Name: $3";

Agora vamos executar esse script com os três parâmetros de entrada:

sh userReg-positional-parameter.sh john 25 'John Smith'

A saída será:

Username : johnAge: 25Full Name: John Smith

2.2. Flags

Using flags is a common way of passing input to a script. Ao passar a entrada para o script, há uma bandeira (geralmente uma única letra) começando com um hífen ( – ) antes de cada argumento.vamos dar uma olhada no userReg-flags.sh script, que leva três argumentos: username (-u), age (-a), e nome completo (-f).,

modificaremos o script anterior para usar bandeiras em vez de depender de parâmetros posicionais., O getopts função lê as bandeiras na entrada, e OPTARG refere-se aos valores correspondentes:

Vamos executar este script com a mesma entrada, só que desta vez, vamos adicionar sinalizadores para a entrada:

sh userReg-flags.sh -f 'John Smith' -a 25 -u john

A saída é o mesmo que antes, apesar de ter deslocado as posições do nome de usuário e nome completo argumentos:

Username : johnAge: 25Full Name: John Smith

Aqui estamos usando o getopts função para analisar as bandeiras fornecidos como entrada, e o caso do bloco de atribuir o valor especificado para a variável correspondente.

2, 3., A construção de Loop

parâmetros posicionais, embora conveniente em muitos casos, não pode ser usada quando o tamanho da entrada é Desconhecido. O uso de uma construção de loop vem a calhar nestas situações.

a variável é a matriz de todos os parâmetros de entrada. Usando esta variável dentro de um laço for, podemos iterar sobre a entrada e processar todos os argumentos passados.

vamos tomar um exemplo do script users-loop.,sh, que imprime todos os nomes de usuários que foram passados como entrada:

i=1;for user in "" do echo "Username - $i: $user"; i=$((i + 1));done

Agora vamos executar o script:

sh users-loop.sh john matt bill 'joe wicks' carol

E vamos ver o nosso saída:

Username - 1: johnUsername - 2: mattUsername - 3: billUsername - 4: joe wicksUsername - 5: carol

No exemplo acima, estamos iteração a variável de usuário longo de toda a matriz de parâmetros de entrada. Esta iteração começa no primeiro argumento de entrada, john, e corre até o último argumento, carol, mesmo que o tamanho da entrada seja desconhecido.

2, 4., Operador de Shift

Operador De Shift em bash (sintacticamente shift n, onde n é o número de posições a mover) muda a posição dos argumentos da linha de comandos. O valor por omissão para n é um, se não for indicado.

o operador de deslocamento faz com que a indexação da entrada comece a partir da posição deslocada. Em outras palavras, quando este operador é usado em uma entrada de array, o parâmetro posicional $1 muda para o argumento alcançado ao mudar as posições n para a direita a partir do argumento atual vinculado ao parâmetro posicional $1.,

considere um script de exemplo que determina se a entrada é ímpar ou mesmo:

sh parityCheck.sh 13 18 27 35 44 52 61 79 93

da discussão acima sobre o parâmetro posicional, agora sabemos que $1 se refere ao primeiro argumento, que é 13. Usando o operador de shift com entrada 1 (shift 1) faz com que a indexação comece a partir do segundo argumento. Ou seja, $1 agora se refere ao segundo argumento (18). Da mesma forma, o turno de chamada 2 fará com que a indexação comece a partir do quarto argumento (35).

vamos novamente dar uma olhada no exemplo do script de usuários discutido acima., Em vez de usar a variável e iterar sobre ela, agora vamos usar o operador de deslocamento. O $# variável devolve o tamanho de entrada:

i=1;j=$#;while do echo "Username - $i: $1"; i=$((i + 1)); shift 1;done

Vamos executar o script com a mesma entrada acima:

sh users-shift-operator.sh john matt bill 'joe wicks' carol

O resultado será o mesmo que antes:

Username - 1: johnUsername - 2: mattUsername - 3: billUsername - 4: joe wicksUsername - 5: carol

neste exemplo, estamos mudando o parâmetro de posição em cada iteração por um até chegar o final da entrada. Portanto, $1 refere-se ao próximo elemento na entrada de cada vez.,

Conclusão

neste artigo, observamos como os argumentos passados para um bash script durante o tempo de execução pode ser processado dentro do script de maneiras diferentes:

  • parâmetros Posicionais podem ser usados quando a entrada é de tamanho fixo e a ordem dos argumentos em que a entrada é conhecido.
  • com bandeiras, a ordem dos argumentos na entrada não importa.
  • a construção do Ciclo vem a calhar quando o tamanho da entrada é Desconhecido.o operador de deslocamento faz com que a indexação comece a partir do argumento na posição deslocada.,
  • a variável devolve a lista de Parâmetros de entrada, e $# devolve o tamanho da lista de entrada.

Como sempre, os exemplos usados neste artigo estão disponíveis no GitHub.

Author: admin

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *