GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo definir y usar funciones en Linux Shell Script

La función es un bloque de código reutilizable. A menudo ponemos código repetido en una función y llamamos a esa función desde varios lugares. La biblioteca es una colección de funciones. Podemos definir funciones de uso común en una biblioteca y otros scripts pueden usarlas sin duplicar el código.

En este artículo discutiremos más sobre funciones y recetas. Para fines de demostración, usaré Bourne Again SHell (Bash) en la máquina Ubuntu.

Función de llamada

En Shell, la función de llamada es exactamente igual que llamar a cualquier otro comando. Por ejemplo, si el nombre de su función es my_func, entonces se puede ejecutar de la siguiente manera:

$ mi_función

Si alguna función acepta argumentos, se pueden proporcionar desde la línea de comandos de la siguiente manera:

$ mi_func arg1 arg2 arg3

Función de definición

Podemos usar la siguiente sintaxis para definir la función:

 función nombre_función {            Cuerpo de la función }

El cuerpo de la función puede contener cualquier comando válido, restricción de bucle, otra función o secuencia de comandos. Ahora vamos a crear una función simple que muestre un mensaje en la pantalla.

 función print_msg {       echo "Hola, mundo" }

Ahora vamos a ejecutar esta función:

 $ print_msg Hola, mundo

Como era de esperar, esta función muestra un mensaje en la pantalla.

En el ejemplo anterior, hemos creado una función directamente en la terminal. También podemos almacenar esta función en un archivo. El siguiente ejemplo demuestra esto.

 #! /bin/bash function print_msg {       echo "Hola, mundo" } print_msg

Hemos definido esta función dentro de function.sh expediente. Ahora vamos a ejecutar este script:

 $ chmod +x function.sh $ ./function.sh Hola, mundo

Si observa, la salida anterior es exactamente idéntica a la anterior.

Más sobre funciones

En la sección anterior hemos definido una función muy básica. Sin embargo, durante el desarrollo del software necesitamos funciones más avanzadas que puedan aceptar varios parámetros y valores de retorno. En esta sección discutiremos tales funciones.

Pasar argumentos a la función

Podemos proporcionar argumentos para que funcionen igual que otros comandos. Podemos acceder a estos argumentos desde la función usando el símbolo de dólar ($). Por ejemplo, $1 representa el primer argumento, $2 representa el segundo argumento y así sucesivamente.

Modifiquemos la función anterior para aceptar el mensaje como argumento. Nuestra función modificada se verá así:

 función print_msg {       echo "Hola $1" }

En la función anterior estamos accediendo al primer argumento usando $1. Ejecutemos esta función:

 $ print_msg "LinuxTechi"

Cuando ejecute esta función, generará el siguiente resultado:

 Hola LinuxTechi

Valor devuelto de la función

Al igual que otros lenguajes de programación, Bash proporciona una declaración de devolución mediante la cual podemos devolver valor a la persona que llama. Entendamos esto con un ejemplo:

función func_return_value {      devuelve 10 }

La función anterior devuelve el valor 10 a su llamador. Ejecutemos esta función:

 $ func_return_value $ echo "El valor devuelto por la función es:$?"

Cuando ejecute la función anterior, generará el siguiente resultado:

 El valor devuelto por la función es:10

NOTA: En bash tenemos que usar $? para capturar el valor de retorno de la función

Recetas de funciones

Hasta ahora tenemos una idea clara de las funciones de bash. Ahora vamos a crear algunas funciones bash útiles que pueden usarse para hacernos la vida más fácil.

Registrador

Vamos a crear una función de registro que imprimirá la fecha y la hora junto con el mensaje de registro.

 función log_msg {        echo "[`date '+ %F %T'` ]:[email protected]" }

Ejecutemos esta función:

 $ log_msg "Este es un mensaje de registro de muestra"

Cuando ejecute esta función, generará el siguiente resultado:

 [ 2018-08-16 19:56:34 ]:Este es un mensaje de registro de muestra

Mostrar información del sistema

Vamos a crear una función para mostrar información sobre el sistema GNU/Linux

 función system_info {       echo "### Información del sistema operativo ###"       lsb_release -a       echo       echo "### Información del procesador ###"       procesador=`grep -wc "procesador" /proc/cpuinfo`       model=`grep -w "nombre del modelo" /proc/cpuinfo  | awk -F:'{print $2}'`       echo "Procesador =$procesador"       echo "Modelo     =$modelo"       echo       echo "### Información de memoria ###"       total=`grep -w "MemTotal" /proc/meminfo | awk '{print $2}'`       free=`grep -w "MemFree" /proc/meminfo | awk '{print $2}'`       echo "Memoria total:$kB totales"       echo "Memoria libre:$kB libres" }

Cuando ejecute la función anterior, generará el siguiente resultado:

### Información del SO ###No hay módulos LSB disponibles. ID del distribuidor:           UbuntuDescription:   Ubuntu 18.04.1 LTSRelease:         18.04Codename:    bionic### Información del procesador ###Processor =1Model     =  Intel(R) Core( TM) CPU i7-7700HQ a 2,80 GHz### Información de memoria ###Memoria total:4015648 kBMemoria libre:2915428 kB

Buscar archivo o directorio desde el directorio actual

La siguiente función busca archivos o directorios desde el directorio actual:

 función de búsqueda {      buscar . -nombre $1 }

Busquemos en el directorio dir4 usando el siguiente comando:

 $ búsqueda dir4

Cuando ejecuta el comando anterior, generará el siguiente resultado:

 ./dir1/dir2/dir3/dir4

Reloj digital

La siguiente función crea un reloj digital simple en el terminal

 function digital_clock {            clear             while [ 1 ]            do                  fecha +'%T'                  dormir 1                   clear         >  done }
Creando biblioteca

La biblioteca es una colección de funciones. Para crear una biblioteca:defina funciones en un archivo e importe ese archivo en el entorno actual.

Supongamos que hemos definido todas las funciones en el archivo utils.sh y luego usamos el siguiente comando para importar funciones en el entorno actual:

$ fuente utils.sh

De ahora en adelante, puede ejecutar cualquier función de la biblioteca como cualquier otro comando bash.

Conclusión

En este artículo discutimos algunas recetas útiles que mejorarán su productividad. Espero que este artículo te inspire a crear tus propias recetas.


Linux
  1. Cómo usar una contraseña cifrada en Linux Bash Shell Script

  2. Cómo comparar números y cadenas en Linux Shell Script

  3. Cómo instalar y usar Flatpak en Linux

  4. Cómo instalar y usar Traceroute en Linux

  5. Cómo verificar si existe un grupo y agregarlo si no existe en Linux Shell Script

Cómo instalar y usar SSHFS en Linux

Cómo instalar y usar PuTTY en Linux

Cómo instalar y usar phpMyAdmin en Linux

Cómo instalar y usar ZSH Shell en Linux

Cómo instalar y usar el comando fd en Linux

Cómo instalar y usar Nu Shell en Linux