Introdução ao Shell Script

Shell script é uma ferramenta programação amplamente utilizada no sistema operacional Linux. A principal função de arquivos de script é tornar mais simples as execuções de tarefas repetitivas, ou seja, automatizar atividades rotineiras. Nesta aula vamos aprender a criar e executar um arquivo de script. 

Criando e executando um shell script

O primeiro passo para criar um arquivo de script é escolher o editor de texto que será usado. Existem diversas editores de texto compatíveis com o Linux, alguns com interface de linha de comando e outros com interface gráfica. Neste guia usaremos o editor GNU Nano, que possui uma interface de linha de comando e já está instalado no Raspbian.

Para criar um arquivo de script basta digitar o comando abaixo no terminal do Linux. 

nano exemplo1.sh

O parâmetro “nano” refere-se ao editor de texto que iremos usar, enquanto que o parâmetro “exemplo1” é o nome que queremos dar ao nosso arquivo. Já a terminação “.sh” está associada ao formato do arquivo, que neste caso é um shell script. 

Como o editor nano possui uma interface de linha de comando, o editor abrirá dentro do terminal. Nessa forma, ao digitar o comando para criar um arquivo shell script, você terá uma janela parecida com a seguinte:

(imagem nano)

A primeira linha de um arquivo de script sempre deve indicar qual interpretador de linha de comando deve ser usado. Existem vários interpretadores e um dos mais usados é o Bash, interpretador padrão na grande maioria das distribuições Linux. Por isso, a primeira linha do arquivo será a seguinte:

#!/bin/bash

Depois desse comando, toda nova linha será interpretada como um novo comando pelo interpretador bash. Como este é nosso primeiro exemplo, vamos usar o tradicional exemplo “Hello World!”. Dessa forma, a segunda linha do nosso arquivo será:

echo Hello World!

O comando “echo” imprime no terminal o argumento que seguinte, que neste caso é a frase “Hello World!”

No final, você terá seu arquivo assim: 

(imagem script)

Com o nosso primeiro código pronto, só precisamos salvar o arquivo para depois executá-lo. Para salvar, basta usar as teclas “ctrl+o”e depois “enter”. Para sair do editor de texto, basta usar as teclas “ctrl+x”. 

Vamos executar nosso primeiro código? No terminal, digite o seguinte o seguinte comando: 

bash ./exemplo1.sh

Ao executar o script, você terá o seguinte resultado:

(imagem hello world!)

Agora que você entendeu como criar e executar um shell script, vamos aprender novos comandos para usar nos seus futuros projetos?

Comandos básicos

Abaixo estão listados alguns dos comandos mais usados em arquivos de script. Para realizar os exercícios abaixo, você deve criar um novo arquivo, editar e depois executar os mesmos. Basta seguir os mesmos passos que foram feitos para o exemplo “Hello World!”. Vamos lá?

Comentários: Comentários em códigos são fundamentais quando se está programando. Explicar o funcionamento do código permite ao desenvolvedor economizar tempo para entendê-lo. Para inserir comentários no seu script, basta iniciar a linha com o caractere #. Abaixo está um exemplo de como usar comentários no seu código.

#!/bin/bash
# Imprime no terminal a frase “Hello World!”
echo Hello World!

(gif comentários)

Perceba que os comentários não são aparecem quando o programa é executado.

Declaração de uma variável: Uma variável é uma palavra que armazena um valor para ser utilizado posteriormente no código. Seu uso evita repetições de valores por parte do programador e torna o código mais informativo e limpo. Veja como declarar uma variável:

#!/bin/bash
nome_kit=Kit_Raspberry_Pi_Zero
numero_aula=6
# Imprime no terminal a frase “Bem-vindo ao guia do Kit_Raspberry_Pi_Zero”
echo Bem-vindo ao guia do $nome_kit
# Imprime no terminal a frase “Você está na aula 6 do curso”
echo Você está na aula $numero_aula do curso

(gif declaração de uma variável)

No início do código são declaradas duas variáveis: “nome_kit” e “numero_aula” são os nomes das variáveis enquanto que “Kit_Raspberry_Pi_Zero” e “6” são os valores das mesmas. Perceba que para utilizar uma variável posteriormente no seu código é preciso usar o caractere $ na frente do nome da mesma.

Entrada de dados do usuário: Às vezes é necessário que o seu script precise interagir com o usuário, pedindo para ele fornecer alguma informação de entrada. Neste caso, é necessário que se leia o que o usuário digitou e isso é feito através do comando “read”. Veja como usar:

#!/bin/bash
# Pergunta ao usuário o nome
echo Qual é o seu nome?
# Lê o nome que foi digitado pelo usuário
read nome_usuario;
# Imprime no terminal a frase “Bem-vindo ao guia do Kit Raspberry Pi, nome”
echo Bem-vindo ao guia do Kit Raspberry Pi, $nome_usuario!

(gif entrada de dados do usuário)

Ações condicionais: Na maioria das vezes precisamos seguir um determinado fluxo de execução baseado em alguma decisão tomada pelo usuário. O comando mais simples que permite isso é o condicional “if-then-else”, que tem a seguinte sintaxe:

#!/bin/bash
senha_esperada=raspberry
# Imprime no terminal a frase “Digite a senha:”
echo Digite a senha:
# Lê a senha que foi digitada pelo usuário
read senha_digitada;
# Compara a “senha_esperada” com a “senha_digitada”
if [ "$senha_digitada" != "$senha_esperada" ]; 
then
    # Se as senhas são diferentes, imprime no terminal a frase “Acesso negado!”
    echo Acesso negado!
else
    # Se as senhas são iguais, imprime no terminal a frase”Acesso liberado!”
    echo Acesso liberado!
fi

(gif entrada de dados do usuário)

Laço de repetição: Em outros momentos queremos que determinado comando seja repetido diversas vezes, usando o comando “while”. Nessas situações, o laço será repetido enquanto a condição for atendida. Veja como usar:

#!/bin/bash
senha_esperada=raspberry
# Imprime no terminal a frase “Digite a senha:”
echo Digite a senha:
# Lê a senha que foi digitada pelo usuário
read senha_digitada;
# Compara a “senha_esperada” com a “senha_digitada” até que elas sejam diferentes
while [ "$senha_digitada" != "$senha_esperada" ]; 
do
    # Se as senhas são diferentes, imprime no terminal a frase “Acesso negado!”
    echo Acesso negado!
    # Imprime no terminal a frase “Digite a senha:”
    echo Digite a senha:
    # Lê a senha que foi digitada pelo usuário
    read senha_digitada;
done
# Quando as senhas são iguais, imprime no terminal a frase “Acesso negado!”
echo Acesso liberado!

(gif entrada de dados do usuário)