Como passar argumentos da linha de comando em um script de shell

Como passar argumentos da linha de comando em um script de shell

Scripts bash são arquivos de texto simples que contêm uma coleção de comandos. Scripts Bash podem ajudar com tarefas administrativas, automação de tarefas e execução de vários comandos. Eles são usados ​​para automatizar tarefas/ações recorrentes.

Podemos colocar todos os comandos que executam no terminal em um script e vice -versa. Os scripts bash incluem conceitos de programação imperativos, como loops, condicionais e funções.

Os argumentos da linha de comando são parâmetros especificados com o nome do arquivo do script do Bash no momento da execução. Os argumentos da linha de comando permitem que o script execute ações dinâmicas com base na entrada:

Como passar um argumento para um script de shell

Para passar um parâmetro para um script bash, basta escrevê -lo após o nome do script Bash no terminal:

./My My-Test-Script.argumento sh  

Como passar vários argumentos para scripts de shell

Você também pode especificar vários argumentos separados pelo espaço junto com o nome do arquivo de scripts do Bash:

./My My-Test-Script.sh arg_1 arg_2 arg_3… arg_n  

Podemos usar as variáveis ​​predefinidas para lembrar esses argumentos no script Bash. O primeiro argumento pode ser lembrado por $ 1, o segundo por $ 2, e assim por diante. A variável predefinida “$ 0” refere -se ao próprio script da festa. A lista de outras variáveis ​​predefinidas importantes é dada abaixo:

  • [Email protegido] : Valores de todos os argumentos
  • $# : Número total de argumentos
  • $$ : ID do processo do shell atual

Agora vamos usar um arquivo bash chamado animais.sh como um exemplo.

#!/bin/bash eco "O animal no primeiro gabinete é: $ 1" echo "O animal no segundo gabinete é: $ 2" echo "O animal no terceiro gabinete é: $ 3" ​​eco "O número total de animais no zoológico são: $#"echo" Os nomes de todos os animais são: $@"
1234567#!/bin/bash eco "O animal no primeiro gabinete é: $ 1" echo "O animal no segundo gabinete é: $ 2" echo "O animal no terceiro gabinete é: $ 3" ​​eco "O número total de animais no zoológico são: $#"echo" Os nomes de todos os animais são: [email protegido] "

Agora vamos executar este script no terminal:

Como passar um argumento contendo espaço

Se um argumento consiste em várias palavras que são separadas pelo espaço, precisamos incluí -lo em citações únicas para passá -lo como um único argumento:

#!/bin/bash eco "Meu nome é: $ 1"
123#!/bin/bash eco "Meu nome é: $ 1"

Como passar argumentos com caracteres especiais

Também podemos passar caracteres especiais como argumentos. Mas eles precisam ser escritos com barras -barras diante deles.

#!/Bin/Bash Echo "Quanto dinheiro você gastou hoje: $ 1"
123#!/Bin/Bash Echo "Quanto dinheiro você gastou hoje: $ 1"

Passando argumentos usando sinalizadores e opções no script de shell

Usar sinalizadores e opções é outra maneira comum de dar entrada a um script de basquete. Uma opção é sempre seguida por um valor enquanto as bandeiras não são seguidas por nenhum valor.

Primeiro, faremos um novo script Bash que leva dois argumentos diferentes (opções) i.e. -n/-nome para nome e -eu/-id Para um número de identificação.

#!/bin/Bash args = $ (getOpt -a --options n: i: -Long "Nome :, id:" -"$@") sett -"$ args" while while; do caso "$ 1" em -n |--name) nome = "$ 2" eco "nome: $ name" shift 2 ;; -i | --id) identificação = "$ 2" eco "id: $ identificação" Shift 2 ;; --) quebrar;; ESAC feito
1234567891011121314151617181920#!/bin/Bash args = $ (getOpt -a --options n: i: -Long "Nome :, id:" -"[email protegido]") avaliar -"$ args" while; do caso "$ 1" em -n |--name) nome = "$ 2" eco "nome: $ name" shift 2 ;; -i | --id) identificação = "$ 2" eco "id: $ identificação" Shift 2 ;; --) quebrar;; Esacdone

No código fornecido acima primeiro, criamos uma variável que armazena todos os nomes curtos e longos de nossas opções. Na segunda linha, avaliamos o Args variável. Em seguida, usamos um pouco de loop para atribuir um bloco de código a cada opção.

No código acima, a mudança é usada para pular os valores das variáveis. O dígito que segue a mudança define quantas variáveis ​​são ignoradas.

De forma similar

Agora vamos adicionar um -v Bandeira que imprime um menu detalhado:

#!/bin/Bash args = $ (getOpt -a --options n: i: v -longo "nome :, id :, verbose" -"$@") avaliar -"$ args" while; do caso "$ 1" em -n |--name) nome = "$ 2" eco "nome: $ name" shift 2 ;; -i | --id) identificação = "$ 2" eco "id: $ identificação" Shift 2 ;; -v | --verbose) echo "Por favor, use -n/-nome ou -i/-id para passar o nome ou número de identificação, respectivamente," quebra ;; --) quebrar;; ESAC feito
1234567891011121314151617181920212223#!/bin/Bash args = $ (getOpt -a --options n: i: V -Long "Nome :, id :, verbose" -"[email protegido]). ; do caso "$ 1" em -n |--name) nome = "$ 2" eco "nome: $ name" shift 2 ;; -i | --id) identificação = "$ 2" eco "id: $ identificação" Shift 2 ;; -v | --verbose) echo "Por favor, use -n/-nome ou -i/-id para passar o nome ou número de identificação, respectivamente," quebra ;; --) quebrar;; Esacdone

As bandeiras não são seguidas por um cólon quando são definidas em um script bash porque não argumentam com eles, diferentemente das opções e.g. o -n a opção leva um nome com ele, como Rahul.

Conclusão

Um operador humano que realiza tarefas recorrentes manualmente é muito ineficiente. Portanto, essas tarefas devem ser automatizadas. Scripts podem nos ajudar a fazer isso.

Nesta redação, aprendemos a passar argumentos através da linha de comando para um script Bash. Argumentos da linha de comando nos ajudam a escrever scripts dinâmicos que desempenham funções diferentes, dependendo da entrada.

Além disso, também discutimos diferentes tipos de argumentos. Também tocamos um pouco em variáveis ​​predefinidas.