Curso de Shell Scripting – Retornando valores em funções e status de saída

Retornando valores em funções e status de saída

O Shell Bash trata as funções como se fossem mini-scripts, completas com um status de saída próprio. É possível gerar u status de saída para a funções de três maneiras diferentes:

1. Status de Saída Padrão

Por padrão, o status de saída de uma função é o status de saída retornado pelo último comando executado na função.

Após a execução da função, usamos a variável padrão $? para determinar o status de saída da função.

Exemplo:

#!/bin/bash
# Status de saída padrão da função
testaarquivo() {
  echo "Verificando arquivo"
  ls -l xyz.abc
}
testaarquivo
echo "O status de saída é $?"

Veja a saída gerada ao executarmos esse script:

Status de saída padrão em funções do Linux

O status de saída foi 2, porque o último comando na função falhou (não há o arquivo xyz.abc; se ele existisse, o status seria 0). Porém, não é possível saber se outros comandos – caso existissem – anteriores a esse, foram executados com sucesso ou não, baseando-se no status de saída da função. Desta forma, confira no status de saída padrão de uma função não é recomendável para monitorar o que ocorre com as funções dentro de um script.

2 – Usando o comando return

O shell bash usa o comando return para sair de uma função com um status de saída específico. Com esse comando podemos especificar um valor inteiro para definir o status de saída da função, de forma programável.

O valor de retorno deve ser obtido com a variável $? assim que a função termina sua execução, e um status e saída só pode ser um valor inteiro no intervalo entre 0 e 255.

Não é possível usar essa técnica se for necessário retornar um valor inteiro muito grande (fora da faixa) ou ainda um valor que seja uma string.

Exemplo:

#!/bin/bash
# Usando o comando return na função
function valor {
 read -p "Digite um número entre 0 e 255: " num
 return $[ $num ]
}

valor
echo "O valor do status retornado é $?"

Veja o resultado obtido após executar o script acima, fornecendo o valor 45 quando solicitado:

Status de saída com função return no Linux

O status de saída é exatamente o número que fornecemos, ou seja, o valor que nós determinamos para a função. Porém, se fornecermos um valor fora da faixa entre 0 e 255 teremos um status de saída com valor diferente do esperado – e errado.

3 – Usando a saída da função

Sabemos que é possível capturar a saída de um comando em uma variável do shell usando os caracteres backtick (` `); também é possível capturar a saída de uma função em uma variável do shell com essa técnica. Assim podemos obter qualquer tipo de saída de uma função e atribui-la a uma variável.

Usamos para isso a seguinte sintaxe:

saida=`função`

A saída da função será atribuída à variável do shell criada (no caso, à variável de nome $saida).

Exemplo:

#!/bin/bash
function valor {
  read -p "Digite um número qualquer: " num
  echo $[num]
}
saida=`valor`
echo "O valor do status retornado é $saida"

Veja o resultado obtido com a execução desse script. Vamos fornecer o valor 1024 quando solicitado pela função:

Usando saída de função em Shell Scripting - Linux

Com essa técnica, podemos capturar valores inteiros, de ponto flutuante e até mesmo valores de strings como status de saída de funções.

É isso aí! Na próxima lição, vamos estudar o uso de variáveis em funções em Shell Scripting no Linux.

Sobre Fábio dos Reis (1325 Artigos)
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 Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*