Argumentos da linha de comando

Argumentos da linha de comando
Em muitos casos, os scripts de basquete exigem valores de argumento para fornecer opções de entrada ao script. Você pode lidar com argumentos da linha de comando em um script de bash de duas maneiras. Um é usando variáveis ​​de argumento, e outro é usando os getopts função. Como você pode lidar com os argumentos da linha de comando é mostrado neste tutorial.

Usando variáveis ​​de argumento:

A variável de argumento começa de $ 0. O nome principal do arquivo de script é armazenado em US $ 0, que recebe valores de argumento dos argumentos da linha de comando. Se dois argumentos forem passados ​​na linha de comando, então sequencialmente, os valores do argumento serão recebidos em variáveis ​​de US $ 1 e US $ 2.

Exemplo -1: enviando três valores numéricos nos argumentos da linha de comando

Crie um arquivo bash com o seguinte script. O script receberá valores de três argumentos e os armazenará em variáveis ​​de US $ 1, US $ 2 e US $ 3. Ele contará o número total de argumentos e os valores de argumento de impressão usando um loop sem um loop. A soma de todos os valores de argumento será impressa mais tarde.

#!/BIN/BASH
# Contando o número total de argumentos
eco "Número total de argumentos: $#"
# Lendo valores de argumento individualmente
eco "Primeiro argumento Valor: $ 1"
eco "Segundo argumento Valor: $ 2"
eco "Terceiro argumento Valor: $ 3"
# Lendo valores de argumento usando loop
Para Argval em "$@"
fazer
eco -n "$ argval"
feito
# Adicionando valores de argumento
soma = $ (($ 1+$ 2+$ 3))
# Imprima o resultado
eco -e "\ nResult of sum = $ sum"

A saída a seguir aparecerá após a execução do arquivo de script com três valores de argumento numérico, 50, 35 e 15.

$ BASH CMDLINE1.SH 50 35 15

Exemplo -2: Tomando o nome do arquivo como um argumento

Crie um arquivo bash com o seguinte script para contar o número total de caracteres de qualquer arquivo. Aqui, o nome do arquivo será aprovado como um argumento da linha de comando.

#!/BIN/BASH
nome do arquivo = $ 1
TOTALCHAR = 'WC -C $ FILENAME'
eco "o número total de caracteres é $ totalchar"

Execute o script Bash com o nome do arquivo como um único valor de argumento e execute outro comando para verificar o número total de caracteres desse arquivo. Aqui, no dia da semana.O arquivo txt é usado como valor de argumento. O número total de caracteres no dia da semana.O arquivo txt é 57.

$ BASH CMDLINE2.Dia da semana.TXT
$ WC -C DIA SEMANA.TXT

Usando a função getopts:

Se você deseja armazenar dados no banco de dados ou em qualquer arquivo ou criar um relatório em um formato específico com base em valores de argumentos da linha de comando, então o getopts A função é a melhor opção para executar a tarefa. É uma função Linux integrada. Portanto, você pode usar facilmente esta função em seu script para ler dados formatados da linha de comando.

Exemplo -3: Ler argumentos da função GOTOPTS

Crie um arquivo bash com o seguinte script para entender o uso do getopts função. A função 'getopts' é usada com um loop de um tempo para ler opções de argumento da linha de comando e valores de argumento. Aqui, 4 opções são usadas que são 'i', 'n', 'm' e 'e'. A declaração do caso é usada para corresponder à opção específica e armazenar o valor do argumento em uma variável. Finalmente, imprima os valores da variável.

#!/BIN/BASH
enquanto getapts ": i: n: m: e:" arg; fazer
caso $ arg em
i) id = $ optarg ;;
n) nome = $ optarg ;;
m) Manufacturing_date = $ optarg ;;
e) expire_date = $ optarg ;;
ESAC
feito
echo -e "\ n $ id $ nome $ fabricação_date $ expire_date \ n"

Execute o arquivo com as seguintes opções e valores de argumento. Aqui, P100 é o valor da opção -i, 'Bolo quente'é o valor da opção -n,'01-01-2021'é o valor da opção -m e'06-01-2021'É o valor da opção.

$ BASH CMDLINE3.sh -i p001 -n 'bolo quente' -m '01 -01-2021 '-e '06 -01-2021'

Quando você precisa enviar valores simples em um script, é melhor usar variáveis ​​de argumento. Mas se você deseja enviar dados de uma maneira formatada, é melhor usar a função GOTOPTS para recuperar valores de argumento. Os usos de variáveis ​​de argumento e opções getopts mostraram no próximo exemplo.

Exemplo 4: Ler argumentos e argumentos normais com opções GETOPTS

As maneiras de ler argumentos de linha de comando usando variáveis ​​de argumento e opções getopts foram mostradas separadamente em exemplos anteriores deste tutorial. Mas essas duas maneiras podem ser usadas em um único script para ler valores de argumento da linha de comando. Crie um script bash com o seguinte código para ler os valores de argumento da linha de comando passados ​​pelas opções do GOTOPTS e parâmetros de argumento. Aqui, três opções GOTOPTS foram usadas para ler o nome de host da linha de comando, nome de usuário e senha. Em seguida, o comando Shift foi usado para remover todas as opções GOTOPTS do comando para ler os valores da linha de comando usando variáveis ​​de argumento. Este script lerá e imprimirá no máximo três valores das variáveis ​​de argumento. Se nenhum valor de argumento sem opção será fornecido após a execução do código, uma mensagem será impressa; Caso contrário, os valores da variável de argumento serão impressos.

#!/BIN/BASH
# Leitura de argumentos com opções GOTOPTS
enquanto a opção getopts 'h: u: p:'; fazer
case "$ option" em
h)
# Print HostName
eco "o nome do host é $ optarg" ;;
você)
# Imprima nome de usuário
eco "O nome de usuário é $ optarg" ;;
p)
# Senha de impressão
eco "a senha é $ optarg" ;;
*)
# Imprimir mensagem de ajuda para fornecer opções erradas
eco "Uso: $ 0 [-h Value] [-u Value] [-p Value]"> & 2
# Termine do script
saída 1 ;;
ESAC
feito
# Remova todas as opções aprovadas pelas opções GOTOPTS
turno "$ (($ optind -1))"
# Lendo os primeiros argumentos normais
se [ ! -z $ 1]; então
eco "o nome da primeira tabela é $ 1"
outro
eco "nenhum argumento normal é dado."
saída 1
fi
# Lendo segundo argumentos normais
se [ ! -z $ 2]; então
eco "o nome da segunda tabela é $ 2"
fi
# Lendo terceiros argumentos normais
se [ ! -z $ 3]; então
eco "O nome da terceira tabela é $ 3"
fi

A saída a seguir aparecerá se a opção errada for dada no momento da execução do código. Aqui, opção -a não existe no script.

A saída a seguir aparecerá se as opções válidas com os valores forem fornecidas na linha de comando no momento da execução do código.

A saída a seguir aparecerá se as opções válidas e valores normais de argumento forem usados ​​na linha de comando no momento da execução do código. Aqui, os argumentos normais são cliente e funcionário.

Usando '$@' para ler argumentos da linha de comando:

Os argumentos da linha de comando podem ser lidos sem usar variáveis ​​de argumento ou opções getopts. Usando '$@'Com o primeiro suporte é outra maneira de ler todos os valores de argumento da linha de comando.

Exemplo 5: Lendo valores de argumento da linha de comando sem variável

Crie um arquivo bash com o seguinte script para ler os valores do argumento sem qualquer variável de argumento e calcule a soma de três valores de argumento da linha de comando. "$@" Foi usado com os primeiros colchetes aqui para ler todos os valores de argumento em uma matriz. Em seguida, a soma dos três primeiros valores da matriz será impressa.

#!/BIN/BASH
# Leia todos os valores dos argumentos
argvals = ("$@")
# Verifique o número total de argumentos
Se [$# -GT 2]
então
# Calcule a soma de três argumentos da linha de comando
sum = $ (($ argvals [0]+$ argvals [1]+$ argVals [2]))
eco "A soma dos 3 argumentos da linha de comando é $ sum"
fi

A saída a seguir aparecerá após a execução do script acima para os valores do argumento 12, 20 e 90. A soma desses números é 122.

Conclusão:

As maneiras de fornecer valores de argumento da linha de comando sem nenhuma opção e com as opções mostraram aqui. A maneira de ler valores de argumento da linha de comando sem usar variáveis ​​mostrou aqui também. Espero que este tutorial ajude os leitores a usar os valores de argumento da linha de comando corretamente em seu script bash.