Pular para o conteúdo

Programação com Shell Script

Este artigo destina-se aos que já conhecem o básico de lógica de programação e que estejam interessados em aprender Shell Script.
Paulo Dias di4s
Hits: 77.202 Categoria: Shell Script Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 2: Estruturas de controle

Assim como outras linguagens de programação, o shell script possui estruturas de controle do tipo: if, case, while e for.

A sintaxe dessas estruturas é a seguinte:

if:

#!/bin/bash
nome="paulo";
if [ $nome != "paulo" ] ; then
  echo "vc não é o paulo!";
fi

case:

#!/bin/bash
i=1;
case $i in

  1)
     echo "é 1";
  ;;

  2)
     echo "é 2";
  ;;

  *)
     echo "não 1 nem 2";
  ;;
esac

while:

#!/bin/bash
i=1;
while [ $i -le 10 ] ; do

  echo $i;
  i=$(( $i + 1 ));
done

for:

#!/bin/bash
for i in $( seq 10 ) ; do
  echo $i;
done
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Shell script tem algumas características que não são comuns em outras linguagens. Por exemplo, os espaçamentos que normalmente são permitidos em outras linguagens, podem causar erros em shell script.

Quando é criada uma variável, não deve haver espaços entre o nome da variável, o sinal de igual e o valor atribuído:

#!/bin/bash
i=1;  # ok, vai funcionar
j = 2;  # acho que não vai funcionar

Observações:
  • Perceba que ao criar a variável, não usei o "$". Este símbolo é usado apenas para recuperar o valor da variável.
  • O que está após o símbolo "#" é considerado comentário e não é executado.
  • É possível utilizar o comando read para ler da entrada padrão (geralmente o teclado) e criar variáveis especificadas pelo usuário em tempo de execução.

Veja mais sobre isso no artigo: Explorando a entrada de dados com READ em Bash Shell

Outra particularidade do shell script, é que operações matemáticas não são realizadas diretamente, é necessário utilizar algum comando para realizar o cálculo, por exemplo:

#!/bin/bash
i=1; j=$(( $i + 1 ));  # ok
j=$( expr $i + 2 );  # ok
j=$i + 1;  # não vai funcionar como esperado

No exemplo acima, utilizei o comando: ( $i + 2 )

Basicamente, trata-se de um subshell, o que estiver dentro de "$( )" é executado à parte e o resultado (o que seria impresso na saída padrão) é atribuído para variável. Também seria possível utilizar o comando expr $i + 2 para ter o mesmo resultado.

Outro detalhe importante que foi visto nos exemplos anteriores, são os operadores usados nas estruturas de controle dentro do comando "[ ]", que na verdade é um açúcar sintático para o comando test

Veja alguns desses operadores

Para números:
  • lt → É menor que (LessThan)
  • gt → É maior que (GreaterThan)
  • le → É menor ou igual (LessEqual)
  • ge → É maior ou igual (GreaterEqual)
  • eq → É igual (EQual)
  • ne → É diferente (NotEqual)

Para strings:
  • = → É igual
  • != → É diferente

Testes lógicos:
  • ! → Negação
  • -a → and (geralmente &&)
  • -o → or (geralmente ||)

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Estruturas de controle
   3. Funções
   4. Arrays

Como criar um box para o Vagrant

MathML - Mathematical Markup Language

Bitwise - Escovando os bits

Servidor FTP externo no Ubuntu 12.04 - Criação e configuração

Zoneminder: Substituindo um Unifi NVR

Debugando shell scripts

Programando em Shell Script para iniciantes

Discar BrasilTelecom com PPPOE no Ubuntu 6.10

Introdução ao Shell Script - Baseado no livro de Ken O. Burtch

Programando em shell script (conceitos básicos)

#1 Comentário enviado por Jvek em 14/02/2013 - 12:36h
Cara ótimo artigo. Parabéns!
#2 Comentário enviado por removido em 14/02/2013 - 12:52h
Também gostei!

E como tudo isso é novidade pra mim (e para muitos também), sugiro continuações.
Algo como: Programação com Shell Script - Parte II... etc.


Parabéns!
#3 Comentário enviado por jwolff em 14/02/2013 - 16:09h
Muito bom cara :D
#4 Comentário enviado por xerxeslins em 14/02/2013 - 17:03h
Cara... Eu como iniciante em shell script, só tenho uma coisa a dizer spbre seu artigo: FAVORITADO!

Estou aprendendo as noções de shell script agora e achei bacana a forma didática, simples e bem clara que usou para ensinar!

Espero continuações.

Abraço!
#5 Comentário enviado por dsantoro em 14/02/2013 - 20:23h
Você é o Paulo Dias que trabalhava no Atacadão de Rio Grande? rs
#6 Comentário enviado por newbie-linux em 15/02/2013 - 00:34h
muito bom, parabéns pelo tópico.
#7 Comentário enviado por lcavalheiro em 15/02/2013 - 22:06h
Excelente artigo, favoritado!
#8 Comentário enviado por vmaia em 16/02/2013 - 11:11h
Nice!!!
#9 Comentário enviado por lucianofsjr em 18/02/2013 - 17:31h
mais um q favoritou!!
^^

parabéns pelo artigo cara!!
#10 Comentário enviado por di4s em 18/02/2013 - 20:46h
Valeu pessoal, que bom que o artigo está sendo util. até mais...
#11 Comentário enviado por mlmlightman7 em 17/02/2016 - 21:35h
Parabéns!! Muito bom o ensinamento. Claro e preciso.

Contribuir com comentário

Entre na sua conta para comentar.