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:
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.
Escreva um comentário