Introdução
A utilização do shell script é algo bem comum no universo do Big Data, ele age como “cola” integrando partes heterogêneas de sistemas, executando rotinas, iniciando programas ou monitorando aplicações.
Como podemos ver, é um item importantíssimo da caixa de ferramentas de um engenheiro de dados, estendendo o alcance de ferramentas e atuando como um “coringa” dentro de sistemas e arquiteturas.
Vamos ver alguns conceitos básicos, que servirão de pavimento para coisas mais avançadas.
Exemplo básico
Basicamente, o script, é um arquivo com extensão .sh, dentro dele incluímos os comandos que queremos executar.
Ele atua de modo procedural, executando uma linha após a outra.
O exemplo abaixo verifica se um arquivo existe.
#!/bin/bash
DIR=/opt/teste-shell-script.txt
if test -f "$DIR"; then
echo "$DIR existe."
fi
Para executar, devemos primeiro atribuir as devidas permissões ao arquivo (chmod +x arquivo.sh) e depois ,no diretório do arquivo, digitar : ./arquivo.sh
Aqui a saída do comando:
Esse é um exemplo bem simples de utilização, poderíamos escrever scripts bem mais complexos.
Principais Comandos
Abaixo temos alguns comandos básicos que ajudam a implementar algoritmos dentro de nossos scripts:
Declaração de variáveis.
#!/bin/bash
# String
var="Olá, Mundo!" # Não funciona assim var = "Olá, Mundo!"
echo $var
# ou
echo "Minha variável: $var"
# Numérico
a_var=1
b_var=2
c_var=$(expr $a_var + $b_var)
echo $c_var
# Array
a_array[0]="Olá"
a_array[1]=","
a_array[2]="Mundo"
a_array[3]="!"
echo "Acessando um item do array: ${a_array[0]}"
echo "Acessando o array completo: ${a_array[*]}"
Comandos de decisão e laço.
#!/bin/bash
a=2
# ---------------------------------------------
echo "if, elif e else"
# ---------------------------------------------
if [ $a -eq 2 ]
then
echo "Verdadeiro"
fi
# --
if [ $a -eq 2 ]
then
echo "Verdadeiro"
else
echo "False"
fi
# --
if [ $a -eq 2 ]
then
echo "É dois"
elif [ $a -eq 3 ]
then
echo "É três"
else
echo "Não sei qual é o número"
fi
# ---------------------------------------------
echo "while e break"
# ---------------------------------------------
while [ $a -lt 10 ]
do
if [ $a -eq 5 ]
then
echo "A variável ${a} é 5, saindo do loop"
break
else
echo "Exibindo o valor da variável: $a"
fi
a=$(expr $a + 1)
done
# ---------------------------------------------
echo "case"
# ---------------------------------------------
case "$a" in
"1") echo "O número é 1."
;;
"2") echo "O número é 2."
;;
"3") echo "O número é 3."
;;
*) echo "O numero não está entre 1 e 3."
;;
esac
Operadores
Abaixo os operadores que são utilizados dentro do shell script.
Operador | Descrição | Exemplo de Uso |
+ | soma | ‘expr $a + $b’ |
– | subtração | ‘expr $a – $b’ |
* | multiplicação | ‘expr $a * $b’ |
/ | divisão | ‘expr $a / $b’ |
% | resto da divisão | ‘expr $a % $b’ |
= | atribuição | a = $b |
== | comparação (é igual) | [ $a == $b ] |
!= | negação da comparação (não é igual) | [ $a != $b ] |
Operador | Descrição | Exemplo de Uso |
-eq | Verifica se os valores são iguais | [ $a -eq $b ] |
-ne | Verifica se os valores são diferentes | [ $a -ne $b ] |
-gt | Verifica se o valor é maior | [ $a -gt $b ] |
-lt | Verifica se o valor é menor | [ $a -lt $b ] |
-ge | Verifica se o valor é maior ou igual | [ $a -ge $b ] |
-le | Verifica se o valor é menor ou igual | [ $a -le $b ] |
Operador | Descrição | Exemplo de Uso |
! | Operador de negação, inverte o estado de uma condição | [ ! false ] |
-o | Operador “OU/OR” | [ $a -o $b ] |
-a | Operador “E/AND” | [ $a -a $b ] |
Operador | Descrição | Exemplo de Uso |
= | Verifica se as strings são iguais | [ $a = $b ] |
!= | Verifica se as strings são diferentes | [ $a != $b ] |
-z | Verifica se o tamanho da string é 0 | [ -z $a ] |
-n | Verifica se o tamanho da string é diferente de 0 | [ -n $a ] |
str | Verifica se a string é vazia | [ $a ] (não há declaração explicita) |
Operador | Descrição | Exemplo de Uso |
-d | Verifica se é um diretório | [ -d $arquivo ] |
-r | Verifica se o arquivo tem a permissão de leitura | [ -r $arquivo ] |
-w | Verifica se o arquivo tem a permissão de escrita | [ -w $arquivo ] |
-x | Verifica se o arquivo tem a permissão de execução | [ -x $arquivo ] |
-s | Verifica se o tamanho do arquivo é maior que 0 | [ -s $arquivo ] |
-e | Verifica se o arquivo existe ( também funciona em diretórios) | [ -e $arquivo ] |
Passagem de parâmetros
Também podemos passar parâmetros para dentro de nossos scripts, para isso conheço duas formas.
A primeira é passando os parâmetros diretamente na execução do arquivo .sh. Abaixo, uma implementação que recebe 3 parâmetros.
#!/bin/bash
echo $1 # - Primeiro parâmetro
echo $2 # - Segundo parâmetro
echo $3 # - Terceiro parâmetro
Como podemos ver, na imagem abaixo, podemos acessar cada parâmetro através da junção do cifrão ($) + o numero de sua posição.
A outra forma é através do comando “read -p”.
Abaixo um script com a implementação:
#!/bin/bash
read -p "Insira seu nome:" nome
echo $nome
Como podemos ver, o comando passa o valor inserido no terminal para a variavel nome.
Abaixo, como a saída é feita.
Conclusão
Eu gosto bastante de shell script, em muitos casos usei esse recurso para automatizar alguma tarefa.
Esses são passos simples, mas que servirão de pavimento para coisas mais avançadas.
Existem ainda formas de criar funções, interagir com comandos do terminal, interagir com programas e etc…
Encerro por aqui essa introdução e espero que esse conteúdo ajude 🙂
PS: Um ótimo material para estudo é o tutorialspoint pois existe ainda muitas coisas dentro desse universo.