Retornar un valor desde una función bash

Bash nos permite utilizar funciones que, al finalizar, devuelven el valor de estado de salida ($?), que será cero en caso de que la ejecución sea correcta y cualquier otro valor en caso de error.

El método que más utilizo (sobre todo porque me resulta bastante claro) cuando quiero devolver un valor en una función bash es el de sustitución de comandos. La sustitución de comandos en bash hace uso del operador $().

Como ejemplo, podemos ver la función calculatetime que utilicé en el script puppetlast:

function calculatetime {

  local ARGUMENTO=$1
  local NUMERO=${ARGUMENTO%%[dhms]}
  local LETRA=${ARGUMENTO:${#NUMERO}}
  local VALOR=$1

  if [ $LETRA = "d" ]; then
     VALOR=$((NUMERO*60*60*24))
  elif [ $LETRA = "h" ]; then
     VALOR=$((NUMERO*60*60))
  elif [ $LETRA = "m" ]; then
     VALOR=$((NUMERO*60))
  elif [ $LETRA = "s" ]; then
     VALOR=$((NUMERO))
  fi
  echo $VALOR
}

Mediante este método, hacemos que el resultado de la función se muestre en STDOUT.

Al emplear la sustitución de comandos, conseguiremos almacenar el resultado en una variable:

MIN=$(calculatetime $2)
Be the first to comment

Por favor acceder para comentar.