Criando Funções em Shell Scripting - Linux
Linux e Unix

Criando Funções em Shell Scripting - Linux




Conforme começamos a criar scripts do shell mais complexos, acabaremos invariavelmente reusando partes do código que realizam tarefas específicas. Algumas vezes são tarefas simples, como exibir uma mensagem para o usuário, e outras vezes serão tarefas muito complexas, com trechos de código longos.


Podemos evitar a reescrita de trechos de código que necessitem ser reusados usando Funções, de modo que só escrevemos o trecho de um código específico uma vez - e sempre que precisarmos repeti-lo, apenas fazemos uma chamada à função requisitada.


Criando uma função em Shell Scripting


Há duas formas para criarmos uma função em shell scripting. A primeira usa a palavra-chave function, cuja sintaxe é como segue:


function nome_função {
   comandos da função
}


Onde nome_função se refere ao nome que iremos escolher para chamar a função quando necessário. Já os comandos da função são comandos do shell bash que serão executados quando a função for chamada.
A segunda forma de criarmos uma função não usa a palavra function, e usa a sintaxe a seguir:


nome_função() {
  comandos da função
}


Os parênteses vazios após o nome_função indicam que estamos definindo uma função.


Para usarmos uma função criada, basta especificar seu nome em uma linha dentro de um script, como um comando comum.
Vejamos um exemplo simples:
Vamos criar uma função que escreva a mensagem “Bóson Treinamentos” dez vezes na tela, e inseri-la em um script de nome teste-func.sh:


#!/bin/bash
# Função em um script do shell

function mensagem {
   echo “Bóson Treinamentos”
}

# Chamando a função dez vezes usando um contador:
contador=1
while [ $contador -le 10 ]
do
   mensagem
   contador=$[ contador + 1 ]
done

# Outro texto, indicando o fim do script:
echo “Função executada com sucesso!”


Após dar permissão de execução ao arquivo e executar o script, temos o seguinte resultado:


Idealmente, devemos definir as funções logo no início do script, mas isso não é obrigatório. Porém, uma função não pode ser chamada sem antes ter sido definida.
Outro ponto importante a se lembrar é que cada função deve ter um nome único - não crie duas funções com o mesmo nome dentro de um script.


Retornando valores de uma função


O shell bash trata as funções como se fossem mini-scripts, completos inclusive com um status de saída. Podemos gerar status de saída e retornar valores para as funções de três maneiras diferentes:


1. O status de saída padrão
Por padrão, o status de saída de uma função é o status que é retornado pelo último comando executado dentro da função. Após a função terminar, podemos acessar esse status por meio da variável $? para verificar seu valor - o qual será o status de saída da função em si.
Veja o exemplo no script abaixo:


#!/bin/bash
# Verificando o status de saída da função

func-status() {
   ls -la /home
}

# chamando a função
func-status

# Exibindo o valor do status de saída da função:
echo “O status de saída da função é $?”


Rodando o script obtemos o seguinte resultado:


O status de saída de nosso exemplo foi 0 porque o último (e único) comando de nossa função funcionou perfeitamente. Porém, se a função tiver múltiplos comandos, e algum deles falhar, sem que seja o último, o status retornado ainda será o 0. Podemos resolver esse problema usando o comando return, como veremos a seguir.


2. O comando return
O comando return nos permite especificar um valor inteiro para definir o status de saída da função, de modo a não dependermos do último comando executado dentro da função.
Veja o exemplo:


#!/bin/bash
# Usando o comando return em uma função

function quadrado {
  read -p “Digite um número entre 2 e 10: “ valor
  echo “Vamos calcular o quadrado do número digitado”
  return $[ $valor * $valor ]
}

# chamando a função
quadrado

# verificando o status de saída
echo “status de saída da função: $?”


Executando o script temos:
O status ad função retornado agora é o valor retornado pelo comando return.
Ao usar o comando return em uma função, tome cuidado com o seguinte:


3. Usando a saída da função
Podemos capturar a saída de uma função em uma variável do shell. para isto, basta atribuir a função a uma variável. Note o uso de backticks (crases) na declaração:


statusValor=`função`


Vejamos um exemplo:


#!/bin/bash
# Function Output

function quadrado {
  read -p “Digite um número entre 2 e 10: “ numero
  echo $[ $numero * $numero ]
}

# atribuindo o valor da função à variável do shell valor
valor=`quadrado`

# mostrando o valor:
echo “O valor é $valor”


Executando o script:


Veja que agora não há mais a limitação de valor entre 0 e 255.
Com essa técnica, também podemos retornar valores de string e ponto flutuante. É uma ótima técnica para retornar valores de funções.


No próximo artigo mostraremos como usar variáveis em funções de shell scripting.



Eu

Sobre Fábio dos Reis
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Linux e Open Source em geral, Astrônomo Hobbysta e estudante de idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo.



loading...

- Comando History - Histórico E Edição De Comandos No Bash - Linux
Vamos estudar neste artigo o comando do bash history. Quando usamos o shell bash, é natural digitarmos comandos longos e complexos, e muitas vezes precisamos repeti-los depois, ou executá-lo diversas vezes com algumas pequenas variações. O shell...

- Comando Hwclock - Trabalhando Com O Relógio De Hardware Do Computador No Unix / Linux
O comando hwclock é utilizado para consultar e configurar o relógio de hardware (RTC, Real Time Clock) do computador.O relógio que é gerenciado pelo kernel do Linux não é o mesmo que o relógio de hardware da máquina. O relógio da máquina (de...

- Criando Caixas De Diálogo Em Shell Scripting Com Dialog - Linux
O pacote dialog é uma ferramenta criada originalmente por Savio Lam. Este pacote permite criar caixas de diálogo padrão em janelas em um ambiente de texto, usando códigos de controle de escape ANSI.Podemos incorporar estas caixas de diálogo em...

- Vulnerabilidade Shellshock Do Bash
Recentemente foi descoberta uma vulnerabilidade no Bash (Bourne Again Shell) que permite que uma máquina Linux ou OS X seja atacada por meio da execução de código remoto. O nome dessa falha de segurança é Shellshock, descoberta por Stephane Schazelas,...

- Comparando Arquivos No Linux / Unix
Comando cmpCompara o conteúdo de dois arquivos e envia o resultado para a saída padrão.Usa-se o comando cmp para arquivos que não são de texto para verificar se são idênticos. Para comparar arquivos de texto, use o comando diff.Se os arquivos...



Linux e Unix








.