Funções Bash não são como funções em outras linguagens de programação, elas são mais parecidas com comandos. Isso significa que eles não têm valor de retorno clássico, mas
-
um código de saída / retorno. Este é um número inteiro no intervalo 0-255, onde 0 significa "sucesso" e todos os outros valores representam um erro. Se você tentar especificar um número fora desse intervalo, ele será levado ao módulo 256 (adicione ou subtraia 255 do seu número até que ele se ajuste ao intervalo de 0 a 255).
Este código é automaticamente definido para o código de retorno da última declaração que foi executada dentro da função, a menos que você a defina manualmente usando o comando
return
, assim:return 1
-
fluxos de saída. Cada função Bash pode gravar strings arbitrárias nos streams de saída (STDOUT e STDERR), assim como os scripts normais. A saída pode ser diretamente dos comandos que você executa na função ou configurada manualmente usando
echo
.Mas, em vez de permitir que essa saída seja exibida no console, você pode capturá-la quando executar a função, por exemplo, usando a sintaxe de substituição de comandos do Bash e armazene-a em uma variável em seu script principal:
example_function() { # do something useful echo "return this message" } returned_value="$(example_function)"
Assim, seu código teria que ser assim:
file_count() {
find "" -maxdepth 1 -type f -printf '.' | wc -c
# the line above already prints the desired value, so we don't need an echo
}
files_in_somedir="$(file_count "$somedir")"
Consulte Valor de retorno no script bash (no Stack Overflow) para obter mais informações.