Guia para iniciantes no BASH
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 seu conhecimento e, com sorte, no final, serão capazes de escrever alguns scripts bastante inteligentes.
Da última vez que cobrimos criando seu primeiro script que simplesmente exibia as palavras "Hello World". Abrange 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 importantes 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 saltam para algumas coisas de nível bastante baixo e talvez forneçam informações demais.
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 de toque)
toque em 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á $ @"
pressione 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".

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 fique da seguinte maneira:
#! / bin / bash
eco "olá $ 1"
Salve o script pressionando CTRL e O e então saia pressionando CTRL e X.

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).

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.

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

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 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á $ @"
pressione CTRL e O para salvar o script e CTRL e X para sair do nano.

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á"?

Echo Statements 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 uma análise séria de números e manipulação de arquivo / pasta, 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á $ @"
pressione CTRL e O para salvar o arquivo e CTRL e X 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
olá gary newell

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 a fazer a mesma coisa continuamente 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 a 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.