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.204 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 3: 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
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.

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

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

AWK - Manipulação de arquivos de texto

MathML - Mathematical Markup Language

JavaScript - Programação orientada a objetos

Como criar um box para o Vagrant

Zoneminder: Substituindo um Unifi NVR

Explorando a entrada de dados com READ em Bash Shell

Simples e rápido: matando todos os processos de um usuário

Introduzindo um pouco mais a fundo o shell script (revisado)

Linguagem Lua - Introdução ao Aprendizado da Linguagem

Introduzindo um pouco mais a fundo o shell script

#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.