Skip to main content

Beginners Guide To BASH - Parâmetros de entrada

Beginner's Guide to the Bash Terminal (Abril 2025)

Beginner's Guide to the Bash Terminal (Abril 2025)
Anonim

Bem-vindo à segunda parte do Beginners Guide To BASH series, que é o único que é o único tutorial BASH escrito por um iniciante para iniciantes.

Os leitores deste guia desenvolverão seus conhecimentos à medida que eu for construindo meus conhecimentos e, esperançosamente, ao final de tudo, poderemos escrever alguns scripts bastante inteligentes.

Na semana passada eu falei sobre criar seu primeiro script que simplesmente mostrava as palavras "Hello World". Abrange temas como editores de texto, como abrir uma janela de terminal, onde colocar seus scripts, como exibir as palavras "Hello World" e alguns pontos mais refinados em caracteres de escape, como aspas ("").

Esta semana vou cobrir os parâmetros de entrada. Existem outros guias que ensinam esse tipo de coisa, mas eu acho que eles entram em algumas coisas de baixo nível e talvez forneçam muita informação.

O que é um parâmetro?

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

Como poderíamos 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".

Ao permitir que nosso script leia os parâmetros de entrada, podemos usar um script para saudar qualquer pessoa.

Para fazer isso, abra uma janela de terminal (CTRL + ALT + T) e navegue até a sua 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)

toque em greetme.sh

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

nano greetme.sh

Digite o seguinte texto no nano:

#! / bin / bash echo "olá $ @"

Pressione CTRL e O para salvar o arquivo e, em seguida, 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

Se eu executar o script com o meu nome, ele exibe as palavras "Hello Gary".

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 olá e depois há a estranha notação $ @. (sobre o comando echo)

O $ @ se expande para exibir todos os parâmetros que foram inseridos junto com o nome do script. Então, se você digitar "sh greetme.sh tim", as palavras "hello tim" serão exibidas. Se você digitar "greetme.sh tim smith", as palavras "olá tim smith" serão exibidas.

Pode ser bom para o script greetme.sh apenas dizer olá usando apenas o primeiro nome. Ninguém diz "olá gary newell" quando eles me conhecerem, eles podem dizer "olá gary" embora.

Vamos mudar o script para que ele use apenas o primeiro parâmetro. Abra o script greetme.sh no nano digitando o seguinte:

nano greetme.sh

Altere o script para que ele leia da seguinte maneira:

#! / bin / bash echo "olá $ 1"

Salve o script pressionando CTRL e O e, em seguida, saia pressionando CTRL e X.

Execute o script como mostrado abaixo (substitua o meu nome pelo seu):

sh greetme.sh gary newell

Quando você executar o script, ele simplesmente dirá "olá gary" (ou esperançosamente "olá" e qualquer que seja seu nome.

O 1 após o símbolo $ basicamente diz ao comando echo, use o primeiro parâmetro. Se você substituir o $ 1 por um $ 2, ele exibirá "hello newell" (ou qualquer que seja seu sobrenome).

Aliás, se você substituiu os US $ 2 por US $ 3 e executou o script com apenas dois parâmetros, a saída seria simplesmente "Olá".

É possível exibir e manipular o número de parâmetros realmente inseridos e, em tutoriais posteriores, mostrarei 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 forma:

#! / bin / bash echo "você digitou $ # nomes" echo "hello $ @"

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

O $ # na segunda 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á"?

O uso real das instruções echo é fornecer uma saída detalhada e significativa para o usuário. Se você pode imaginar que você quer fazer algo complicado, que envolve um processamento sério de números 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 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, há alguns outros parâmetros de entrada úteis que é uma boa ideia conhecer e incluí-los todos em um snippet de código.

Abra o script greetme.sh e faça as seguintes alterações:

#! / bin / bash echo "Nome do arquivo: $ 0" echo "ID do processo: $$" echo "---------------------------- --- "echo" você digitou $ # nomes "echo" ola $ @ "

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

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 ola gary newell

O $ 0 na primeira linha do script exibe o nome do script que você está executando.Note que é o dólar zero e não o dólar.

O $$ na segunda linha exibe o ID do processo do script que você está executando. Por que isso é útil? Se você estiver executando um script em primeiro plano, poderá cancelá-lo simplesmente pressionando CTRL e C. Se você executou o script em segundo plano e começou a repetir, fazer a mesma coisa várias vezes ou começar a causar danos ao seu sistema, você precisaria matá-lo.

Para matar um script em execução em segundo plano, você precisa do ID do processo do script. Não seria bom se o script fornecesse o ID do processo como parte de sua saída. (sobre comandos ps e kill)

Finalmente, antes de terminar com este tópico, quis discutir sobre a saída. Toda vez 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 exibe o texto "hello gary" em um arquivo chamado greetme.log.

Toda vez que você executa o script com o símbolo>, ele sobrescreve o conteúdo do arquivo de saída. Se você preferir anexar ao arquivo, substitua o> por >>.

Resumo

Agora você deve ser capaz de escrever texto na tela e aceitar parâmetros de entrada.