Skip to content

Guia para iniciantes no BASH – Parâmetros de entrada

18 de abril de 2021

Bem-vindo à 2ª parte da série Beginners Guide To BASH, que é única por ser o único tutorial BASH escrito por um iniciante para iniciantes. Os leitores deste guia aumentarão seus conhecimentos e, com sorte, no final, serão capazes de escrever alguns scripts bastante inteligentes. Da última vez, abordamos a criação de seu primeiro script que simplesmente exibia as palavras “Hello World”. Ele cobre assuntos como editores de texto, como abrir uma janela de terminal, onde colocar seus scripts, como exibir as palavras “Hello World” e alguns pontos mais precisos sobre caracteres de escape, como aspas (“”). Esta seção cobre os parâmetros de entrada. Existem outros guias que ensinam esse tipo de coisa, mas com muita frequência, eles pulam em algumas coisas de baixo nível e talvez forneçam muitas informações.

Um script de parâmetro adiciona personalização

No script “Hello World” do último tutorial, tudo era muito estático. O script realmente não fez muito.

Como podemos melhorar o script “Hello World”?

Que tal um script que cumprimenta a pessoa que o executa? Em vez de dizer “Hello World”, ele dirá “Hello Gary”, “Hello Tim” ou “Hello Dolly”. Sem a capacidade de aceitar parâmetros de entrada, precisaríamos escrever três scripts “hellogary.sh”, “hellotim.sh” e “hellodolly.sh”.

Como criar um parâmetro

Ao permitir que nosso script leia os parâmetros de entrada, podemos usar um script para cumprimentar qualquer pessoa. Para fazer isso, abra uma janela de terminal (CTRL + ALT + T) e navegue até a pasta de scripts digitando o seguinte: (sobre o comando cd) scripts de cd

Crie um novo script chamado greetme.sh digitando o seguinte: (sobre o comando touch) touch greetme.sh

Abra o script em seu editor favorito digitando o seguinte: (sobre o comando nano) nano greetme.sh

Insira o seguinte texto no nano: #! / Bin / bash
echo “olá $ @”

Aperte CTRL e O para salvar o arquivo e então CTRL e X para fechar o arquivo.

Para executar o script, digite o seguinte na linha de comando, substituindo pelo seu nome. sh greetme.sh Tim

Se eu executar o script com meu nome, ele exibirá as palavras “Hello Gary”.

Linux executa script básico com parâmetros

A primeira linha tem a linha #! / Bin / bash que é usada para identificar o arquivo como um script bash. A segunda linha usa a instrução echo para ecoar a palavra hello e, em seguida, há a estranha notação $ @. (sobre o comando echo) O $ @ se expande para exibir todos os parâmetros inseridos junto com o nome do script. Portanto, se você digitar “sh greetme.sh tim”, as palavras “hello tim” serão exibidas. Se você digitou “greetme.sh tim smith”, as palavras “hello tim smith” seriam exibidas.

Usando comandos de eco

Pode ser bom para o script greetme.sh apenas dizer olá usando apenas o primeiro nome. Ninguém diz “Olá, Gary Newell” quando conhece alguém, mas eles podem dizer “Olá, Gary”. Vamos mudar o script para que use apenas o primeiro parâmetro. Abra o script greetme.sh no nano digitando o seguinte: nano greetme.sh

Altere o script para que tenha a seguinte leitura: #! / Bin / bash
eco “olá $ 1”

Salve o script pressionando CTRL e O e saia pressionando CTRL e X.

Script Linux Bash com parâmetro individual

Execute o script conforme mostrado abaixo (substitua o nome pelo seu): sh greetme.sh gary newell

Quando você executar o script, ele simplesmente dirá “Olá, Gary” (ou, com sorte, “olá” e qualquer que seja o seu nome).

Linux executa o script Bash com um único parâmetro

O 1 após o símbolo $ basicamente diz ao comando echo, use o primeiro parâmetro. Se você substituir $ 1 por $ 2, será exibido “hello newell” (ou qualquer que seja seu sobrenome). Você também pode adicionar $ 2 após $ 1 para obter o nome completo.

Script Linux Bash com vários parâmetros

Executá-lo com mais de um parâmetro irá exibi-los nos locais correspondentes à ordem em que foram inseridos.

Linux executa script com vários parâmetros

A propósito, se você substituiu $ 2 por $ 3 e executou o script com apenas 2 parâmetros, a saída seria simplesmente “Olá”.

Como exibir o número de parâmetros usados

É possível exibir e manipular o número de parâmetros realmente inseridos e os tutoriais posteriores mostrarão como usar a contagem de parâmetros para fins de validação. Para exibir o número de parâmetros inseridos, abra o script greetme.sh (nano greetme.sh) e altere o texto da seguinte maneira: #! / Bin / bash
echo “você digitou $ # nomes”
echo “olá $ @”

Aperte CTRL e O para salvar o script e CTRL e X para sair do nano.

Parâmetros de contagem de script do Linux Bash

O $ # na 2ª linha exibe o número de parâmetros inseridos. Até agora, tudo isso foi novo, mas não muito útil. Quem precisa de um script que simplesmente exibe “olá”?

Linux executa parâmetros de contagem de script bash

Instruções de eco vs. parâmetros de entrada

O uso real das instruções echo é fornecer uma saída detalhada e significativa para o usuário. Se você pode imaginar que deseja fazer algo complicado que envolve alguns cálculos graves e manipulação de arquivos / pastas, seria útil mostrar ao usuário o que está acontecendo em cada etapa do caminho. Por outro lado, os parâmetros de entrada tornam seu script interativo. Sem os parâmetros de entrada, você precisaria de dezenas de scripts, todos fazendo coisas muito semelhantes, mas com nomes ligeiramente diferentes. Com tudo isso em mente, existem alguns outros parâmetros de entrada úteis que é uma boa ideia saber e vou incluí-los todos em um trecho de código. Abra seu script greetme.sh e altere-o da seguinte maneira: #! / Bin / bash
echo “Nome do arquivo: $ 0”
echo “ID do processo: $$”
echo “——————————-“
echo “você digitou $ # nomes”
echo “olá $ @”

Aperte CTRL e O para salvar o arquivo e CTRL e X sair.

Informações adicionais sobre o script Linux Bash

Agora, execute o script (substitua pelo seu nome). sh greetme.sh

Desta vez, o script exibe o seguinte: Nome do arquivo: greetme.sh
ID do processo: 18595
——————————
você digitou 2 nomes
olá gary newell

Script de execução do Linux Bash com informações adicionais

O $ 0 na primeira linha do script exibe o nome do script que você está executando. Observe que é o dólar zero e não o dólar o. O $$ na segunda linha exibe a identificação do processo do script que você está executando. Por que isso é útil? Se você estiver executando um script em primeiro plano, pode cancelá-lo simplesmente pressionando CTRL e C. Se você executou o script em segundo plano e ele começou a executar um loop e fazer a mesma coisa repetidamente ou começou a causar danos ao seu sistema, você precisaria eliminá-lo. Para encerrar um script em execução em segundo plano, você precisa da identificação do processo do script. Não seria bom se o script fornecesse o id do processo como parte de sua saída? (sobre os comandos ps e kill)

Para encerrar …

Finalmente, antes de terminarmos com este tópico, é importante discutir para onde vai a saída. Sempre que o script foi executado até o momento, a saída foi exibida na tela. É bastante comum que a saída do script seja gravada em um arquivo de saída. Para fazer isso, execute seu script da seguinte maneira: sh greetme.sh gary> greetme.log

O símbolo> no comando acima gera o texto “hello gary” para um arquivo chamado greetme.log. Cada vez que você executa o script com o símbolo>, ele substitui o conteúdo do arquivo de saída. Se você preferir anexar ao arquivo, substitua o> por >>. Agora você deve ser capaz de escrever texto na tela e aceitar parâmetros de entrada.