Articles

Funciones Bash

Posted by admin

una función Bash es esencialmente un conjunto de comandos que se pueden llamar numerosas veces. El propósito de una función es ayudarlo a hacer que sus scripts bash sean más legibles y evitar escribir el mismo código repetidamente. En comparación con la mayoría de los lenguajes de programación, las funciones de Bash son algo limitadas.

en este tutorial, cubriremos los conceptos básicos de las funciones Bash y le mostraremos cómo usarlas en sus scripts de shell.

Defining Bash Functions #

la sintaxis para declarar una función bash es sencilla., Las funciones se pueden declarar en dos formatos diferentes:

  1. el primer formato comienza con el nombre de la función, seguido de paréntesis. Este es el formato preferido y más utilizado.

    function_name () { commands}

    una Sola línea de la versión:

    function_name () { commands; }
  2. El segundo formato comienza con la palabra reservada function, seguido por el nombre de la función.,

    function function_name { commands}

    una Sola línea de la versión:

    function function_name { commands; }

Unos puntos a tener en cuenta:

  • Los comandos entre las llaves ({}) se llama el cuerpo de la función. Los tirantes rizados deben estar separados del cuerpo por espacios o líneas nuevas.
  • Definir una función no la ejecuta. Para invocar una función bash, simplemente use el nombre de la función. Los comandos entre las llaves se ejecutan cada vez que se llama a la función en el script de shell.,
  • la definición de La función debe colocarse antes de cualquier llamada a la función.
  • cuando se utilizan funciones «compactadas» de una sola línea, un punto y coma ; debe seguir el último comando de la función.
  • Siempre trate de mantener los nombres de sus funciones descriptivos.

Para entender mejor esto, veamos el siguiente ejemplo:

~/hello_world.sh
#!/bin/bashhello_world () { echo 'hello, world'}hello_world

Vamos a analizar el código línea por línea:

  • En la línea 3, estamos definiendo la función de darle un nombre., La llave rizada { marca el inicio del cuerpo de la función.
  • Line 4 es el cuerpo de la función. El cuerpo de la función puede contener varios comandos, sentencias y declaraciones de variables.
  • Línea 5, la llave de cierre }, define el final de la etiqueta hello_world función.
  • En la línea 7 estamos ejecutando la función. Puede ejecutar la función tantas veces como necesite.,

si ejecuta el script, se imprimirá hello, world.

variables ámbito #

las variables globales son variables a las que se puede acceder desde cualquier lugar del script, independientemente del ámbito. En Bash, todas las variables por defecto se definen como globales, incluso si se declaran dentro de la función.

las variables locales se pueden declarar dentro del cuerpo de la función con la palabra clave local y se pueden usar solo dentro de esa función. Puede tener variables locales con el mismo nombre en diferentes funciones.,

para ilustrar mejor cómo funciona el ámbito de variables en Bash, consideremos este ejemplo:

~/variables_scope.sh

el script comienza definiendo dos variables globales var1 y var2. Entonces existe una función que establece una variable local var1 modifica la variable global var2.,

si ejecuta el script, debería ver la siguiente salida:

Before executing function: var1: A, var2: BInside function: var1: C, var2: DAfter executing function: var1: A, var2: D

de la salida anterior, podemos concluir que:

  • cuando se establece una variable local dentro del cuerpo de la función con el mismo nombre que una variable global existente, tendrá prioridad sobre la variable global.
  • Las variables globales se pueden cambiar desde dentro de la función.

devuelve valores #

a diferencia de las funciones en lenguajes de programación «reales», las funciones Bash no permiten devolver un valor cuando se llaman., Cuando se completa una función bash, su valor de retorno es el estado de la última instrucción ejecutada en la función, 0 para el éxito y un número decimal distinto de cero en el rango 1-255 para el error.

el estado de retorno se puede especificar usando la palabra clave return, y se asigna a la variable $?. La instrucción return termina la función. Se puede pensar en él como el estado de salida de la función .

~ / return_values.,sh
#!/bin/bashmy_function () { echo "some result" return 55}my_functionecho $?
some result55

realmente devolver un valor arbitrario de una función, tenemos que utilizar otros métodos. La opción más sencilla es asignar el resultado de la función a una variable global:

~/return_values.sh
#!/bin/bashmy_function () { func_result="some result"}my_functionecho $func_result
some result

otra opción, mejor para devolver un valor de una función es enviar el valor a stdout usando echo o printf like se muestra a continuación:

~/return_values.,sh
#!/bin/bashmy_function () { local func_result="some result" echo "$func_result"}func_result="$(my_function)"echo $func_result
some result

en Lugar de simplemente ejecutar la función que imprime el mensaje en la salida estándar, somos la asignación de la función de salida para el func_result variable mediante la etiqueta $() sustitución de comandos. La variable se puede usar más tarde según sea necesario.

pasando argumentos a funciones Bash #

para pasar cualquier número de argumentos a la función bash simplemente póngalos justo después del nombre de la función, separados por un espacio., Es una buena práctica citar dos veces los argumentos para evitar que un argumento con espacios en él se pierda.

he Aquí un ejemplo:

~/passing_arguments.sh
#!/bin/bashgreeting () { echo "Hello $1"}greeting "Joe"
Hello Joe

Conclusión #

Un golpe de función es un bloque de código reutilizable diseñado para realizar una operación determinada. Una vez definida, la función puede ser llamada varias veces dentro de un script.

También puede leer sobre cómo usar una función Bash para crear un comando de acceso directo memorable para un comando más largo.

Leave A Comment