Bóson Treinamentos em Ciência e Tecnologia

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

Shell Scripting no Linux - Retornando valores e status de funções

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:

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:

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:

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.

Sair da versão mobile