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.

[ Hits: 74.980 ]

Por: Paulo Dias em 14/02/2013 | Blog: http://naotenhosite.eu.nao.tenho


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

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

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Estruturas de controle
   3. Funções
   4. Arrays
Outros artigos deste autor

Como criar um box para o Vagrant

Bitwise - Escovando os bits

JavaScript - Programação orientada a objetos

Zoneminder: Substituindo um Unifi NVR

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

Leitura recomendada

Debugando shell scripts

Programar em Shell - Script só para os baixinhos

Variáveis, if, else e unless em Ruby

Trabalhar com array no Bash

Sed - Introdução

  
Comentários
[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.

[12] Comentário enviado por di4s em 17/02/2016 - 23:16h

Obrigado.


Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts