No shell script escrevemos um programa inteiro com base no shell, que por si só nos fornece uma interface simples para utilizar as funções do sistema operacional através de alguns comandos.

Os scripts de shell são utilizados para executar tarefas específicas e evitar trabalho repetitivo. Com eles, podemos escrever um script para automatizar um conjunto de instruções a serem executadas uma após a outra, ao invés de digitar os comandos um após o outro n vezes.

Neste artigo, vamos abordar alguns desses comandos que estão presentes na maioria dos sistemas Linux. O script de shell é realmente útil para quem trabalha com DevOps e desenvolvimento back-end.

Continue com a gente!

O que é shell script?

O Shell Script é um software para computador de código aberto que foi escrito para ser executado pelo shell do Unix/Linux. Basicamente, o Shell Script é um tipo de arquivo no qual uma pessoa desenvolvedora pode adicionar comandos Shell e executá-los em sequências.

O principal objetivo desse tipo de script é que ele pode conter uma infinidade de comandos e lógicas, reduzindo drasticamente os esforços das atividades cotidianas. Por exemplo, conseguimos criar um script que no momento que ligamos o computador, ele inicia todos os softwares que desejamos utilizar.

Exemplo de shell script

O que é o shell?

O shell (concha, em português) é o processo mais próximo entre uma pessoa usuária e um serviço do sistema operacional. Quando executamos um terminal e rodamos alguns comandos, estamos por baixo dos panos, chamando o shell.

Veja o diagrama a seguir:

Como funciona o shell

Mesmo que você não queira, o shell está presente em toda operação do sistema operacional. A interface gráfica que vemos é apenas uma representação visual de comandos que são executados em uma sequência específica no shell.

O que é possível fazer com shell script? Para quê serve?

O shell script é muito popular pela sua fácil automação de tarefas no ambiente Linux. Caso você precise executar uma ação todos os dias, um shell script pode ser de grande ajuda, já que podemos programar todas as operações que você deseja.

Além disso, temos alguns itens que também podem ser automatizados:

  • Compressão e envio de arquivo na nuvem, como o Amazon S3, Azure, Google Cloud, etc.
  • Em alguns servidores, podemos ter problemas de logs muito grandes. Um simples script que roda todo o dia de manhã, consegue comprimir essas informações e até mesmo limpá-los.
  • É possível conectar um script na internet e vasculhar o preço de alguns produtos específicos, e dependendo do preço, podemos até enviar um e-mail avisando disso.

O que é stdin, stdout e stderr?

A base de todo sistema operacional são comandos que, unidos, resultam em uma ou várias operações. No Linux, esse processo não é diferente. A partir da entrada de um código no seu terminal, ele deve possuir ou uma saída ou um erro. Aqui veremos mais sobre o funcionamento desses recursos: stdin, stdout e stderr.

stdin

O stdin é um termo que significa Standard Input (Entrada padrão, em português). Esse termo se refere a qualquer tipo de entrada vinda da pessoa usuária. A mais comum é a do teclado, no entanto, existe a possibilidade de enviar arquivos também.

Para entender o recurso stdin, vale a pena entender o que são dispositivos de entrada.

stdout

Stdout significa Standard Output (Saída padrão, em português) e é a operação de saída de algum processo no terminal. O stdout sempre é executado no mesmo terminal no qual foi realizado o stdin. 

Para entender o recurso stdout, vale a pena entender o que são operações de saída.

Stderr

Stderr significa Standard Error (Erro padrão, em português) e é parecido com o stdout, reproduz um erro de uma operação no terminal.

Toda tarefa está sujeita a algum tipo de erro, quando ele ocorre, o stderr exibe a mensagem de erro no terminal que foi acionado.

Como criar e usar um shell script? Introdução na prática!

1. Criar o shell script

Os shell scripts são feitos utilizando editores de texto. No seu sistema Linux, abra um programa para edição de texto e crie um novo arquivo para começar a digitar o seu script. Lembre-se de dar a permissão para execução do arquivo e coloque-o em algum lugar onde o shell consiga encontrá-lo.

As etapas para a criação de um shell script são:

  • Criar um arquivo usando um editor de texto. Lembre-se de colocar o script com a extensão .sh.
  • Sempre inicie o script com #! /bin/sh
  • Escreva algum código.
  • Salva o arquivo de script.
  • Para executar o script escreva bash nome_do_arquivo.sh ou ./nome_do_arquivo.sh

Vamos criar um pequeno script:

#!/bin/bash
ls

O código do script exibe todos os arquivos e pastas do diretório atual, como da seguinte forma:

Exemplo de script shell exibindo os arquivos e pastas do diretório atual

2. Dar permissões ao arquivo

O próximo passo é alterar a permissão do arquivo utilizando o comando chmod:

chmod +x ./nome_do_arquivo.sh

Com isso, conseguimos executar o arquivo, tanto com bash nome_do_arquivo.sh, como também ./nome_do_arquivo.sh.

3. Editar e executar o arquivo

Conseguimos criar o nosso script com a ferramenta integrada de código VS Code, que além de oferecer suporte à linguagem shell também conta com um terminal integrando, onde é possível executar o script rapidamente.

No script a seguir, escrevemos no terminal a mensagem “Hello World” e logo a seguir, exibimos a localização do script:

#!/bin/bash
echo "Hello World"
echo "Localização do script atual:"
pwd

O comando echo serve para mostrar na tela alguma mensagem e o pwd é um comando que exibe o diretório completo que o arquivo se encontra.

4. Como inserir comentários e por quê?

Adicionar comentários em um programa é fundamental, seja para efeito de documentação ou apenas para lembrar o que uma função faz. Na linguagem shell, a sintaxe para adicionar um comentário é a seguinte:

#!/bin/bash
echo "Hello comentário"
# Meu primeiro comentário

Apenas adicione a hashtag (#) e pronto, escreva o seu comentário.

5. Declarando e usando variáveis

Variáveis armazenam dados em formato de caracteres e números. No shell não é diferente e conseguimos armazenar informações que podem ser utilizadas apenas dentro do shell.

Por exemplo, o script a seguir cria uma variável no shell e a imprime:

#!/bin/bash
variavel="Olá"
echo $variavel

Perceba que não podemos adicionar nenhum espaço na declaração da variável.

Nesse outro script lemos alguns valores do usuário utilizando o comando read e temos a possibilidade de utilizá-los para algumas lógicas:

#!/bin/bash
echo "Qual o seu nome?"
read nome
echo "Como você está, $nome?"
read estado
echo "Eu estou $estado também!"
Script no shell

6. Atribuindo resultados de comandos a variáveis

Aqui nesse outro caso conseguimos guardar o valor de um comando em um variável, para que fique mais fácil e organizado o entendimento dos resultados.

No exemplo a seguir definimos em uma variável o valor do diretório correspondente ao script.

#!/bin/bash
diretorio_atual=`ls`
echo "$diretorio_atual"

Vale a pena ressaltar que o shell executa o comando ls e guarda as informações dentro da variável diretorio_atual.

11 principais comandos para usar no shell script!

1. Comando if

A sintaxe do comando if é bem simples, como em outras linguagens ela espera que você passe uma condicional e a partir disso temos uma ação. O código a seguir mostra uma lógica onde se o usuário digitar o número 4 uma mensagem irá ser escrita no terminal.

#!/bin/bash
echo "Digite um número de 1 a 10"
read numero

if [ $numero == 4 ]
then
    echo "Você digitou o número correto!"
fi

2. Comando else

Se temos o if, devemos ter o else. A sintaxe não é muito difícil e basta que você alinhe o else com um if para que tenha a lógica funcionando. O código a seguir é uma continuação do anterior.

#!/bin/bash
echo "Digite um número de 1 a 10"
read numero

if [ $numero == 4 ]
then
    echo "Você digitou o número correto!"
else
    echo "Você digitou o número errado!"
fi

3. Comando elif

Como era de se esperar, temos a possibilidade de criar várias condicionais em sequência. Dessa maneira a sintaxe é bem semelhante com os demais comandos. O código a seguir continua adicionando mais funcionalidades ao primeiro código.

#!/bin/bash
echo "Digite um número de 1 a 10"
read numero

if [ $numero == 4 ]
then
    echo "Você digitou o número correto!"
elif [ $numero == 6 ]
then
    echo "Você digitou outro número correto!"
else
    echo "Você digitou o número errado!"
fi

4. Comando case

Com o aumento das condicionais em um if, devemos pensar em diminuir o código e deixá-lo mais fácil de ser lido. Com a declaração case, obtemos uma simplicidade nas condicionais. O código a seguir utiliza as mesmas lógicas dos anteriores.

#!/bin/bash
echo "Digite um número de 1 a 10"
read numero

case $numero in
    #case 1
    4) echo "Você digitou o número correto!";;
    6) echo "Você digitou outro número correto!";;
    *) echo "Você digitou o número errado!";;
esac

5. Comando cat

O comando cat é um dos comandos que utilizamos com frequência no terminal. No shell script conseguimos usar ele para ver o conteúdo de um arquivo. No exemplo a seguir o script irá exibir o conteúdo de um arquivo com nome de texto.txt.

#!/bin/bash
echo `cat texto.txt`

6. Comando find

Com o auxílio desse comando conseguimos encontrar qualquer tipo de arquivo a partir de um diretório. O código do script abaixo tem como objetivo encontrar um arquivo com um nome parecido com texto.txt.

#!/bin/bash
echo `find ./ -name texto.txt`

7. Comando grep

Esse comando serve para buscar certas palavras em um arquivo, logo se você quiser encontrar uma palavra chave específica, utilize-o sem ressalvas. Aqui estamos buscando a palavra lorem em nosso arquivo texto.txt.

#!/bin/bash
echo `grep lorem ./texto.txt`

8. Comando awk

Este comando é um pouco mais complexo e necessita um formato específico do arquivo de texto.

1 azul
2 vermelho
3 verde
4 vermelho
5 verde
6 azul
7 azul
8 verde
9 vermelho

Com esse arquivo no diretório do script, escrevemos o seguinte código para buscar apenas uma cor que desejamos.

#!/bin/bash
echo `awk '/azul/ {print}' ./texto.txt`
Resultado da busca de cor no shell script

9. Agendando tarefas com o cron

Caso precise que um script rode todos os dias às 9:00 da manhã, você pode facilmente agendar um cron job para que o seu código faça isso. O código ficaria algo como:

0 0 7 1/1 * ? * ./meu_arquivo.sh

10. Loop for

Como qualquer outra linguagem, o shell também suporta loops for, para isso devemos seguir a seguinte sintaxe:

#!/bin/bash

for i in 1 2 3 4 5
do
    echo "Bem vindo, $i."
done

11. Loop while

Por fim, mas não muito menos importante, contamos com o loop while, que nos permite executar uma condição até que ela seja falsa. Dê uma olhada no seguinte código:

#!/bin/bash
n=1

while [ $n != 5 ]
do
	echo "Bem vindo, $n."
	n=$(( n+1 ))
done

Quais as vantagens e desvantagens de usar um shell script?

Vantagens

Algumas das vantagens do shell script:

  • A sintaxe e a estrutura do shell são realmente simples e fáceis de aprender.
  • Por ter uma curva de aprendizado baixa, é uma boa linguagem de programação para automação de tarefas.
  • Praticamente todos os comandos são muito similares a outras linguagens de programação, tornando o aprendizado muito mais fácil para quem tem experiência.
  • A sua execução é bem flexível e possível através do terminal.
  • Os seus recursos de processamento de texto são muito bons.

Desvantagens

As suas desvantagens são:

  • A definição de variáveis não é muito criteriosa e em casos de programas mais extensos, podemos ter problemas.
  • Não possui um desempenho muito bom.
  • O shell script pode não se dar muito bem com algumas estruturas de códigos do shell, como por exemplo o awk.

Conclusão

Esse artigo teve como objetivo auxiliar o início dos seus estudos na área de automação de tarefas no computador. Mesmo não parecendo algo realmente útil, é de se pensar que no cotidiano acabamos realizando tarefas repetitivas e muitas vezes lentas. Com a criação de um simples script, esses problemas seriam resolvidos com facilidade.

Além de ser muito fácil a criação, é também muito simples entender a sintaxe e lógica do programa, já que a linguagem shell se faz bem simples e não diferente das demais linguagens. Ademais contamos com os comandos do terminal para nos auxiliar no decorrer da criação do script.

Gostou do assunto? Então aproveite a visita ao nosso blog e leia mais sobre os Comandos Linux: 25 que toda pessoa que usa Linux precisa conhecer! 

0 Shares:
Você também pode gostar