¿Hay una palabra key return en bash?

En el siguiente código, necesito una palabra key de retorno en la primera statement if. Necesito salir de la function después del eco.b

push() { a=$1 b=$2 if [ $# -eq 0 ] then echo "Enter git shortname for first argument" fi if [ $# -eq 1 ] then b=$(timestamp) fi git add -A . git commit -m $b git push $a echo "push() completed." } 

Investigación

Google retira el artículo SO

 push() { local a="$1" b="$2" #don't overwrite global variables [ "$#" -eq 0 ] && { 1>&2 echo "Enter git shortname for first argument" #stderr return 64 #EX_USAGE=64 } : "${b:=`timestamp`}" #default value git add -A . git commit -m "$b" #always quote variables, unless you have a good reason not to git push "$a" 1>&2 echo "push() completed." } 

Lo anterior debe ejecutarse tanto en el dash como en el bash , si el caso desea utilizar el time de inicio más rápido.

¿Por qué citar?

Si no cita, las variables se dividirán en los caracteres presentes en $IFS , que de forma pnetworkingeterminada es el espacio , la nueva línea y el carácter de tabulación . Además, los asteriscos dentro de los contenidos de las variables sin comillas se expanden globalmente. Por lo general, no desea ni la split ni la expansión global, y puede darse de baja de este comportamiento al citar dos veces su variable.

Creo que es una buena práctica citar por defecto, y comentar los casos cuando no se cita porque realmente se quiere dividir o globbing allí.

( Bash no se divide ni se expande globalmente en asignaciones, por lo que local a=$1 es seguro en bash , pero otros shells (más prominentemente dash ) lo hacen. A a="$1" es ultraseguro, consistente con cómo se comportan las variables en otro lugar, y bastante portátil entre las conchas).

BASH tiene return pero puede que no lo necesite en su function. Puedes usar:

 push() { a="${1?Enter git shortname for first argument}" [[ $# -eq 1 ]] && b=$(timestamp) b=$2 git add -A . git commit -m $b git push $a echo "push() completed." } 

a="${1?Enter git shortname for first argument}" regresará automáticamente de la function con un post de error dado si no le pasa ningún argumento.

Reescríbalo de modo que siempre salga en la parte inferior. Usa construcciones anidadas para que no tengas que rescatar en el medio.

¿Qué pasa con la statement de return bash ?

 push() { a=$1 b=$2 if [ $# -eq 0 ] then echo "Enter git shortname for first argument" return fi if [ $# -eq 1 ] then b=$(timestamp) fi git add -A . git commit -m $b git push $a echo "push() completed." }