Retornar un valor desde una función bash | Algo de Linux

martes, 17 de enero de 2017

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)
Publicado por primera vez en http://enavas.blogspot.com.es