¿Cómo puedo llamar una función en Bash y pasarle parámetros?

publicado por: Anonymous

Tengo actualmente un fichero llamado funcion.sh que contiene una función para Bash:

function dimeNombre {
    nombre=$LOGNAME
    echo -n $nombre
}

Y otro fichero llamado hola.sh con el siguiente contenido:

#!/bin/bash
source "/home/pdelgado/Escritorio/funcion.sh"
dimeNombre "$?"
echo "Hola $1"

Necesito que el script hola.sh llame a funcion.sh y que esta le devuelva el nombre de usuario para que hola.sh use dicho parámetro en el echo.

Tengo un lío enorme con esto de usar funciones externas y cómo pasar parámetros de un lado a otro.

Gracias.

solución

En Bash no hay un return al uso como lo conocemos en otros lenguajes. Como la idea que subyace es la de que la salida de un comando se usa para el siguiente, lo que hacemos es decirle qué ha salido. De allí que en las funciones devolvamos cosas con un “echo” o “printf” o lo que sea que devuelve a stdout.

Por tanto, para llamar a dimeNombre y recoger su resultado, debes ejecutar el comando y guardarlo en una variable:

resultado=$(dimeNombre)
echo "dimeNombre ha devuelto $resultado"

Otro ejemplo:

  • Definimos la función dime_nombre:

    function dime_nombre { 
        echo "23"
    }
    
  • La llamamos:

    $ dime_nombre 
    23
    
  • La llamamos y lo guardamos en una variable:

    $ res=$(dime_nombre)
    $ echo "$res"
    23
    
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *