Funciones en Bash

Fumbani Banda 30 enero 2023
  1. Funciones en bash
  2. Definición de funciones en Bash
  3. Funciones de muestra
  4. Alcance variable en la función Bash
  5. Valores devueltos en la función Bash
  6. Pasando Argumentos a Funciones Bash
Funciones en Bash

Este tutorial explica las funciones básicas de Bash y su uso en los scripts de Bash usando funciones sin la palabra clave function y funciones con la palabra clave function.

Funciones en bash

Una función en Bash es un conjunto de comandos que logran una tarea específica. Podemos usar funciones una y otra vez; esto ayuda a evitar escribir el mismo conjunto de comandos repetidamente. Las funciones también hacen que los scripts sean más legibles.

Generalmente, las funciones toman datos, los procesan y devuelven un valor. Sin embargo, en bash scripting, las funciones solo devuelven el estado de salida del último comando.

El estado de salida es cualquier valor entre 0 y 255. El estado de salida, 0, significa que el comando se ejecutó con éxito.

Definición de funciones en Bash

En Bash, hay dos notaciones para declarar funciones. La primera notación usa el nombre de la función entre paréntesis, seguido de llaves, como se muestra a continuación.

name_of_function(){
  command1
  command2
}

La notación anterior también se puede escribir en una línea.

name_of_function(){command1; command2} 

La segunda notación utiliza la palabra clave function para declarar la función, seguida de paréntesis y llaves, como se muestra a continuación.

function name_of_function(){
  command1
  command2
}

También declaramos la función en una línea como se muestra a continuación.

function name_of_function(){command1; command2}

Funciones de muestra

La siguiente secuencia de comandos demuestra el uso de una función en una secuencia de comandos bash. Primero, definimos la función y luego la ejecutamos llamándola. El siguiente script usa la primera sintaxis de usar el nombre de la función seguido de paréntesis y corchetes.

Definimos una función llamada greet; las llaves indican el cuerpo de la función. Tenemos dos declaraciones echo dentro del cuerpo de la función que imprimen texto en la salida estándar.

Para llamar a una función en Bash, escriba el nombre de la función. La última línea del siguiente script llama a la función greet.

#!/bin/bash

greet(){
   echo  "Hello, World!"
   echo  "Bash is Fun!"
}

greet

El script imprime la siguiente salida en la salida estándar.

Hello, World!
Bash is Fun!

El siguiente script bash define una función utilizando la palabra clave function seguida del nombre de la función, add. La función add suma dos números, 3 y 7, mediante el comando expr y asigna la suma a la variable var. El comando echo muestra el valor de la variable var a la salida estándar.

La última línea con el nombre de la función se usa para llamar a la función para su ejecución.

#!/bin/bash
function add(){
   var=`expr 3 + 4`
   echo $var
}

add

Alcance variable en la función Bash

En Bash, todas las variables son variables globales por defecto. Podemos acceder a las variables globales en cualquier lugar del script Bash, incluso dentro de una función. Las variables definidas dentro de una función también son variables globales en Bash.

Para definir una variable local dentro de una función en Bash, usamos la palabra clave local.

La siguiente secuencia de comandos demuestra el alcance de las variables mediante la definición de variables globales, x e y, y una variable local dentro de la función add llamada sum.

#!/bin/bash

x=2
y=4

function add(){
   local sum
   sum=`expr $x + $y`
   echo $sum
}

add

Del script anterior, las variables x e y son variables globales. Podemos acceder a estos en cualquier parte del script. La variable sum es una variable local porque se ha utilizado la palabra clave local para definirla.

Solo podemos acceder a una variable local dentro del cuerpo de la función definida. En este caso, la variable local sum solo se puede utilizar dentro del cuerpo de la función add. Acceder a la variable local, sum, fuera del cuerpo de la función add generará un error.

Valores devueltos en la función Bash

Las funciones Bash no devuelven valores cuando se llaman funciones similares en otros lenguajes de programación. Las funciones de Bash solo devuelven el estado de salida del último comando que se ejecutó.

El estado de salida puede ser cualquier valor entre 0 y 255. El estado de salida, 0, significa que el comando se ejecutó con éxito. Podemos acceder al estado de salida imprimiendo el valor de $?.

Cuando se llama a la función add, ejecuta los comandos dentro de su cuerpo. La primera línea asigna el resultado del comando expr a la variable sum.

La segunda línea imprime el valor de la variable sum en la salida estándar usando el comando echo. La última línea imprime el valor del estado de salida en la salida estándar.

El estado de salida que se imprime es el del comando que se ejecutó anteriormente; el código de estado de salida es para el comando echo que muestra el valor de la variable sum.

#!/bin/bash

add(){
    sum=`expr 2 + 3`
    echo "Sum: $sum"
    echo "Exit Status: $?"
}

add

La ejecución del script muestra el siguiente resultado en el terminal estándar.

Sum: 5
Exit Status: 0

Pasando Argumentos a Funciones Bash

Para pasar argumentos a una función bash, coloque los argumentos junto al nombre de la función separados por un espacio al llamar a la función. La notación $n puede acceder a los parámetros.

La n representa la posición del argumento al lado del nombre de la función. En nuestro caso, $1 representa el primer argumento, 1, y $2 representa el segundo argumento, 2.

function add(){
   sum=`expr $1 + $2`
   echo $sum
}

add "1" "2"

La variable $0 está reservada para representar el nombre de la función, y $# almacena el número de argumentos posicionales que se pasan a la función.

El script anterior produce la siguiente salida a la salida estándar.

3
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Artículo relacionado - Bash Function