logo

Secuencias de comandos Bash: funciones

Un script Bash es un archivo de texto sin formato. Este archivo contiene diferentes comandos para su ejecución paso a paso. Estos comandos se pueden escribir directamente en la línea de comandos, pero desde el punto de vista de la reutilización es útil almacenar todos los comandos interrelacionados para una tarea específica en un solo archivo. Podemos usar ese archivo para ejecutar el conjunto de comandos una o más veces según nuestros requisitos.

Aquí en este artículo, discutiremos el uso de funciones dentro de Bash Scripting.

En programación, una función es un bloque de código que realiza algunas tareas y se puede llamar varias veces para realizar tareas. Proporciona modularidad en el programa y reduce la longitud del código. El ejemplo más simple del uso de una función en scripts Bash se puede dar como:



Guión de ejemplo:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction>

Producción:

actor de cine vijay
Hello World from techcodeview.com>

El ejemplo anterior muestra una función que imprime algo cuando se llama. Entonces, la sintaxis básica para escribir funciones dentro de un Script Bash será

Sintaxis:

# for defining function_name(){ commands ..... } function_name # for calling>

Además de esto, también podemos tener funciones con argumentos de paso y con valores de retorno. Ahora hablemos de ellos.

Funciones con argumentos pasados

Podemos agregar argumentos o parámetros a una función y pasar datos usándolos a la función para que la función pueda actuar con esos datos. En las secuencias de comandos bash, podemos usar la siguiente sintaxis para escribir una función con argumentos de paso.

Sintaxis de funciones con argumentos de paso:

#for defining function_name(){ ..... parameter_1 =  parameter_2 =  . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn>

Podemos pasar directamente los argumentos mientras llamamos a la función y podemos acceder a ellos con , ….. $n dentro de la función. Veamos un ejemplo para una comprensión más clara del mismo.

Ejemplo de funciones con argumentos de paso:

#!/bin/bash add_two_num(){ local sum=$((+)) echo sum of  and  is $sum } add_two_num 2 3>

Salida de funciones con argumentos pasados:

sum of 2 and 3 is 5>

Arriba hay un script para sumar dos números. Aquí hemos proporcionado 2 y 3 como argumentos. Accedimos a ellos usando y de la función, calculamos su suma y la imprimimos en la terminal. A continuación se muestra la descripción del shell del terminal después de ejecutar el script:

Salida de funciones con argumentos pasados

Funciones con valores de retorno

Una función produce un valor de retorno y lo devuelve al método de llamada después de que completa su ejecución. Se puede utilizar un valor de retorno para compartir el resultado producido o algún código de estado sobre si una función se ejecutó correctamente o no. En las secuencias de comandos Bash, el valor de retorno se asigna al $? variable.

Un ejemplo de lo mismo se da a continuación:

Ejemplo de funciones con valores de retorno:

#!/bin/bash myfun(){ return 7 } myfun echo The return value is $?>

Salida de funciones con valores de retorno:

¿Qué es el comando de exportación en Linux?
The return value is 7>

A continuación se muestra el resultado del shell del terminal después de ejecutar el script:

Salida de funciones con valores de retorno

Ahora, modifiquemos la suma anterior del guión de dos números.

Código modificado:

#!/bin/bash myfun(){ return $((+)) } add_two_num 2 3 echo The sum is $?>

Salida de código modificado:

The sum is 5>

Ahora el código anterior es un ejemplo del uso de parámetros y valor de retorno en una función de script Bash.

A continuación se muestra la descripción del shell del terminal después de ejecutar el script:

Salida de código modificado

Alcance variable

El alcance en un programa o script es una región donde las variables tienen su existencia. Si una variable se declara dentro de una función, generalmente es una variable local y si se declara fuera, entonces es una variable global. En el caso de un script bash, este concepto es un poco diferente, aquí cualquier variable, ya sea escrita dentro o fuera de una función, de forma predeterminada es una variable global. Si queremos crear una variable local, entonces necesitamos usar la palabra clave local.

Es una buena práctica utilizar siempre una variable local dentro de una función para evitar confusiones innecesarias.

Un ejemplo de lo mismo se da a continuación:

Ejemplo de alcance variable:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3'>

Salida de alcance variable:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry>

Aquí, en este ejemplo anterior, var2 es una variable local, por lo que cuando accedemos a ella desde la función, funciona bien, pero cuando intentamos acceder a ella fuera de la función, nos da un resultado vacío en la salida.

Por otro lado, a diferencia de los lenguajes de programación, aunque var3 está definido dentro de una función, actúa como una variable global y se puede acceder a ella fuera de la función. A continuación se muestra la descripción del shell del terminal después de ejecutar el script:

Salida de alcance variable

Comandos primordiales

Es posible tener una función con el mismo nombre que el de un comando. Es útil si queremos ejecutar un comando con opciones específicas o queremos tener una edición personalizada del mismo.

Un ejemplo de lo mismo se da a continuación:

pagar en git

Ejemplo de comandos primordiales:

#!/bin/bash #overriding command echo(){ builtin echo 'The name is : ' } echo 'Satyajit Ghosh'>

Salida de comandos primordiales:

The name is : Satyajit Ghosh>

Aquí en este ejemplo, hemos anulado el eco dominio. Ahora, antes de imprimir la cadena dada, agrega a la cadena algunas palabras más y luego imprime. A continuación se muestra la descripción del shell del terminal después de ejecutar el script:

Salida de comandos primordiales