Pasar un Array a una Función en Bash
- Funciones en Bash Script
- Llamar a una función en Bash
- Argumentos de función en Bash
- Pasar un Array a una Función en Bash
Este pequeño tutorial de programación trata sobre el uso de funciones en scripts de Bash y pasarles matrices. Antes de pasar al tema real, presentaremos brevemente las secuencias de comandos de Bash.
Un archivo de script Bash contiene una serie de comandos Bash. Estos comandos son una combinación de los que escribimos con frecuencia en la línea de comandos (como ls
o cp
) y los que podríamos escribir en la línea de comandos.
Cualquier comando que se pueda ingresar y ejecutar en la línea de comando realizará la misma acción si se incluye en un archivo de script y se ejecuta.
Funciones en Bash Script
En los scripts de shell, los bloques de código reutilizables se agrupan mediante funciones Bash. La mayoría de los lenguajes de programación admiten esta función, a la que también se hace referencia con otros nombres, como procedimientos, métodos o subrutinas.
Un método para almacenar secciones de código reutilizables bajo un nombre se denomina función Bash. Hay dos ventajas en el uso de funciones al escribir scripts de Bash:
- La lectura directa de una función en la memoria del shell permite guardarla para su uso posterior. Las computadoras de hoy en día tienen mucha memoria, por lo que usar funciones es más rápido que escribir repetidamente el mismo código.
- Los scripts de shell largos se pueden dividir en bloques de código modulares reutilizables con la ayuda de funciones. Los trozos son más simples de crear y mantenerse al día.
Declarar una función en Bash
Hay dos formas de declarar una función en Bash:
-
Una forma de declarar una función es usar el nombre de la función solo así:
<function_name> () { <set of commands> }
-
Otra forma es usando la palabra clave
función
de esta manera:function <function_name> { < set of commands> }
Para ambos tipos de declaración, también podemos usar una declaración de una línea como esta:
function <function_name> { <set of commands>; }
Al usar funciones, debe tener en cuenta los siguientes hechos:
- Ya sea que use scripts de Bash o la terminal directamente, los comandos escritos en una sola línea deben terminar con un punto y coma (
;
). - Los paréntesis son opcionales cuando se añade la palabra reservada
función
. - El cuerpo de la función está compuesto por los comandos que aparecen entre llaves o
. Se permite cualquier cantidad de declaraciones, variables, bucles o declaraciones condicionales en el cuerpo. - Trate de dar nombres de funciones descriptivos. Los nombres descriptivos son útiles cuando otros desarrolladores miran el código, aunque no son necesarios cuando se prueban funciones y comandos.
Llamar a una función en Bash
Para llamar a una función, usamos su nombre. Asegúrese de que la función esté declarada antes de llamarla.
Veamos el código a continuación:
#!/bin/Bash
func1 () {
echo Hello from function
echo Good Bye!
}
func1
Este código dará el siguiente resultado:
Argumentos de función en Bash
Los parámetros deben agregarse después de la llamada a la función y separados por espacios si desea pasar argumentos a una función. Trabajar con argumentos de la función Bash tiene varias opciones enumeradas en la siguiente tabla.
Argumento | Objetivo |
---|---|
$0 |
Cuando se define una función en la terminal, guarda su nombre. Cuando se especifica en un script de Bash, $0 genera el nombre y la ubicación del script. |
$1 , $2 , etc. |
Esto corresponde a la posición del argumento que sigue al nombre de la función. |
$# |
Esto le dice a la cuenta del número total. de argumentos pasados. |
$@ y $* |
Esto guarda el tipo de matriz o lista de argumentos pasados. |
"$@" |
Divide la lista pasada en argumentos separados, por ejemplo, "$1", "$2" , etc. |
Pasar un Array a una Función en Bash
Considere un ejemplo a continuación en el que pasaremos una lista de arreglos a la función, y la función la dividirá en variables separadas y las imprimirá en la pantalla.
#!/bin/Bash
function printArray() {
a=("$@")
for b in "${a[@]}";
do
echo "$b"
done
}
array=("first" "second" "third")
printArray "${array[@]}
Tenga en cuenta que pasamos los argumentos como una lista entre paréntesis cuando llamamos a la función. Esto los convertirá en una matriz y la función los guardará en $@
.
Luego imprimimos esa matriz en un bucle.
Producción: