Como passar argumentos da linha de comando em um script de shell
- 2769
- 253
- Robert Wunsch DVM
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.
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:
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.
- « Como fazer backup e restaurar o banco de dados PostGresql (5 dicas)
- O que é o Apache Prefork, Worker and Event MPM (módulos de multipocessamento) »