Diferencia entre retorno y salida en las funciones de BASH


Answers

return hará que la función actual salga del alcance, mientras que exit hará que la secuencia de comandos finalice en el punto donde se llama. Aquí hay un programa de muestra para ayudar a explicar esto:

#!/bin/bash

retfunc()
{
    echo "this is retfunc()"
    return 1
}

exitfunc()
{
    echo "this is exitfunc()"
    exit 1
}

retfunc
echo "We are still here"
exitfunc
echo "We will never see this"

Salida

$ ./test.sh
this is retfunc()
We are still here
this is exitfunc()
Question

¿Cuál es la diferencia entre la declaración de return y la de exit en las funciones de BASH con respecto a los códigos de salida?




Recuerde, las funciones son internas de un script y normalmente regresan de donde fueron llamadas usando la declaración return. Llamar a un script externo es otro asunto completamente diferente, y los scripts generalmente terminan con un enunciado de salida.

La diferencia "entre las declaraciones de retorno y de salida en las funciones de BASH con respecto a los códigos de salida" es muy pequeña. Ambos devuelven un estado, no valores per se. Un estado de cero indica éxito, mientras que cualquier otro estado (1 a 255) indica una falla. La declaración de devolución regresará al script desde donde fue llamada, mientras que la declaración de salida finalizará el script completo desde donde se encuentre.

return 0  # returns to where the function was called.  $? contains 0 (success).

return 1  # returns to where the function was called.  $? contains 1 (failure).

exit 0  # exits the script completely.  $? contains 0 (success).

exit 1  # exits the script completely.  $? contains 1 (failure).

Si su función simplemente finaliza sin declaración de devolución, el estado del último comando ejecutado se devuelve como el código de estado (y se colocará en $? ).

Recuerde, devolver y salir devuelve un código de estado de 0 a 255, disponible en $? . No puede agregar nada más en un código de estado (por ejemplo, devolver "cat"); no funcionará. Sin embargo, una secuencia de comandos puede devolver 255 razones diferentes para la falla mediante el uso de códigos de estado.

Puede establecer variables contenidas en el script de llamada, o echo resulta en la función y usar sustitución de comando en el script de llamada; pero el propósito de la devolución y la salida es pasar los códigos de estado, no los valores o los resultados de cálculo como cabría esperar en un lenguaje de programación como C.




Antes que nada, return es una palabra clave y exit mi amigo es una función.

Dicho esto, aquí hay unas explicaciones más simples.

return Devuelve un valor de una función.

exit Sale de o abandona el shell actual.




En palabras simples (principalmente para novatos en codificación), podemos decir,

`return` : exits the function,
`exit()` : exits the program(called as process while running)

También si observaste, esto es muy básico pero ...,

`return` : is the keyword
`exit()` : is the function



Links