Mais
Valor de retorno em uma função Bash
Eu estou trabalhando com um script bash e quero executar uma função para imprimir um valor de retorno:
function fun1(){
return 34
}
function fun2(){
local res=$(fun1)
echo $res
}
Quando executo fun2
, não imprimo "34". Por que este é o caso?
265
3
Embora bash tenha uma declaração de
retorno
, a única coisa que você pode especificar com ela é a função' o próprio statusexit
(um valor entre0
e255
, 0 significado "sucesso"). Entãoreturn
não é o que você quer.Você pode querer converter seu comando
retorno
para um comandoecho
- dessa forma sua saída de função poderia ser capturada utilizando$()
chaves, que parece ser exatamente o que você quer.Aqui está um exemplo:
Outra forma de obter o valor de retorno (se você quiser apenas retornar um número inteiro 0-255) é
$?
.Note também que você pode utilizar o valor de retorno para utilizar lógica booleana como
fun1 || fun2
só executaráfun2
sefun1
retornar um valor0
. O valor de retorno padrão é o valor de saída da última instrução executada dentro da função.$(...)
captura o texto enviado para stdout pelo comando contido dentro. Oreturn
não sai para stdout.$?
contém o código do resultado do último comando.A instrução
retorno
define o código de saída da função, muito parecido com osaída
fará para todo o script.O código de saída para o último comando está sempre disponível na variável
$?
.