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.292 ]

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


Funções



Shell script também tem funções, elas seguem a seguinte sintaxe:

#!/bin/bash

function somar() {
   echo $(( $1 + $2 ));
}

somar 3 5  # esses são os parâmetros recuperados por $1 e $2

As funções em shell script são chamadas da mesma forma que um comando, elas recebem parâmetros sem a necessidade de especificá-los na declaração da função.

Os parâmetros são recuperados através de variáveis especais, como a "$1" e a "$2" utilizadas no exemplo acima. Segue uma lista de outras variáveis utilizadas em funções:
  • $0 → O nome da função
  • $1 → O primeiro parâmetro
  • $2 → O segundo parâmetro
  • $numero → O parâmetro da posição numero
  • $# → A quantidade de parâmetros
  • $* → Todos os parâmetros

Com essas variáveis, posso melhorar o script anterior de forma a não limitar o número de parâmetros a serem somados:

#!/bin/bash

function somar() {

  resultado=0;
  for i in $* ; do

     resultado=$(( $resultado + $i ));
  done

  echo $resultado;
}

somar 1 2 3 4 5

Uma observação importante sobre as funções em shell script, é que apesar de possuir a instrução "return", essa instrução é utilizada para uma finalidade diferente do que as demais linguagens.

Em shell script, funções são chamadas como os comandos, e como os comandos, elas têm um código de retorno que indica se as instruções foram executadas corretamente ou não. Este código é retornado com a instrução "return" :).

Ou seja, o return vai especificar se a função foi ou não bem sucedida.

Obs.: Pode ser testado com a variável "$?", tente executar um comando no terminal e depois rode o comando "echo $?".

Para conseguir armazenar o retorno de função em uma variável, como seria feito em outras linguagens, costumo usar o subshell dessa maneira:

#!/bin/bash

function somar() {

  resultado=0;
  for i in $* ; do

     resultado=$(( $resultado + $i ));
  done

  echo $resultado;
}

#usando o subshell é possível
#armazenar o retorno da função

total=$( somar 1 2 3 4 5 );

A grande utilidade das funções, é que elas organizam e garantem a reutilização de código. Uma possibilidade interessante que o shell script permite, é incluir um arquivo com funções dentro de outro (parecido com o require e include do PHP).

Por exemplo, posso criar varias funções que estejam relacionadas e colocá-las no mesmo arquivo e depois, quando for necessário, uso a instrução "source" para incluir essas funções em outro arquivo.

Supondo que a função "somar" estivesse no arquivo "matemática.sh", posso usá-la em outro arquivo da seguinte maneira:

#!/bin/bash

source "matematica.sh";

total=$( somar 1 2 3 4 5 );

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

Bitwise - Escovando os bits

AWK - Manipulação de arquivos de texto

MathML - Mathematical Markup Language

Como criar um box para o Vagrant

Zoneminder: Substituindo um Unifi NVR

Leitura recomendada

expr - Definição e uso do comando

AWK - Introdução

Introdução ao Shell Script

Bitwise - Escovando os bits

Shell Script 1 - Básico

  
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