Está en la página 1de 1

UBUNLOG # Menú $

Inicio » General » Linux » Cómo usar funciones en Bash

Cómo usar funciones en


Bash
7 de febrero de 2017 a las 18:47. 1 Comentario

BÚSQUEDAS PATROCINADAS

Crear web

Desarrollo de software

Alexa Amazon

Ad para crear

A Linux Shell

Cómo usar funciones en Bash mediante


este lenguaje informático basado en la shell de Unix
y compatible con POSIX. Como lenguaje su función
consiste en la interpretación de los comandos de
Linux, permitiendo automatizar nuestros procesos
repetitivos y también crear comandos a partir de la
órdenes del sistema operativo. En este artículo
repasaremos cómo usar las funciones en Bash.
Recomiendo leer el artículo cómo crear tus propios
scripts usando Bash.

En el scritp que proponemos usamos el lenguaje


Bash para busar un archivo a partir conociendo su
nombre. Para ello usaremos el comando find pero
ayudándonos de las funciones previamente definidas
en dicho script. Hay que tener en cuenta una
peculiaridad o limitación de Bash que no está
presente en todos los lenguajes: para llamar a una
función ésta ha de estar definida previamente.

1 Soporte informatico -
Servidores Redes CCTV
Desarrollo de software Planes
mensuales Soporte informático
rabbit.com.uy

2 Curso Gratuito de SEO


¿Te has cansado de un puesto de
trabajo, un jefe controlador y un
salario insu>ciente?
armadadigital.net

Definir funciones
Existen dos formas de definir las funciones: con o sin
la declaración function:

function nombre_funcion ()
{
# codigo
}

o bien esta otra, que es la que yo uso como verás


más adelante.

nombre_funcion ()
{
# codigo
}

Asimismo Bash también provee un método para


pasar parámetros y devolver resultados que
veremos en próximos artículos.

#!/usr/bin/env bash

# ~/.bin/encontrar
# encuentra archivos a partir de la desc
#
# Por Pedro Ruiz Hidalgo
# version 1.0.0
# Copyright © enero 2017
#
#

EXIT_OK=0
EXIT_BAD=66

PATRON=$1
DIRECTORIO=$2

autor ()
{
echo -e "\nPedro Ruiz Hidalgo @petrorum
}

ayuda ()
{
echo -e "\nencontrar [PATRON] [DIRECTOR
}

noparams ()
{
echo -e "\nSon necesarios dos parámetro
read -p "¿Quieres ver la ayuda? (S|s)"
if [[ $REPLY =~ ^[Ss]$ ]];
then
echo ""
ayuda
fi
}

nodir ()
{
echo -e "\nDirectorio no Existe\n"
}

if [[ $PATRON == "-h" ]];


then
ayuda
exit $EXIT_OK
fi

if [[ $PATRON == "-a" ]];


then
autor
exit $EXIT_OK
fi

if [ $# -lt 2 ];
then
noparams
else
if [ -d $DIRECTORIO ];
then
echo ""
find $DIRECTORIO -name $PATRON*
echo ""
exit $?
else
nodir
exit EXIT_BAD
fi
fi

Análisis del script


Definiciones

Para Bash todo proceso terminado con éxito debe


tener el código “0” como señal. En las lineas 12 y
13 se definen los códigos de error manejados
EXIT_OK para éxito y EXIT_BAD para salida en
caso de fallo.

En las lineas 15 y 16 se asignan a las variables


PATRON y DIRECTORIO los parámetros primero
($1) y segundo ($2) que aparecen en la linea de
comandos tras el nombre del script como veremos
más adelante cuando lo ejecutemos.

En la línea 18 creamos nuestra primera función. La


función llamada “autor” muestra por consola la
autoría del script cuando lo llamemos con el
argumento “-a” como se puede ver en el if en las
lineas 50~54. El argumento “-e” de la línea 23
permite mostrar la secuencia de “siguiente linea”
mediante la codificiación “\n”.

La llamada a noparams (lineas 28~37) se encarga de


gestionar los sucesos que deben ocurrir cuando el
script es llamado sin ningún parámetro. Mostramos
debidamente encerrado entre códigos de nueva
linea, un mensaje indicando que el script debe ser
ejecutado con dos parámetros, seguidamente se
muestra una opción (linea 31) para mediante
read que insta a pulsar “S” o “s” en caso de querer
mostrar la ayuda. En la linea 32 decimos literalmente:
‘si la respuesta (que nos llega en la variable $REPLY)
contiene cualquiera de los caracteres ese mayúscula
o minúscula’, entonces (linea 33) muestra una linea
vacía (linea 34) y ejecuta la función ayuda (lineas
23~26).

La función nodir (lineas 39~42) será ejecutada


cuando detectemos que el directorio donde se intenta
realizar la búsqueda no exista.

Funcionalidad

Con esto ya tenemos definidas todas las funciones


necesarias para ejecutar nuestro programa, que
realmente empieza en la linea 44 comprobando si el
primero de los parámetros que recibe el script es “-h”,
en caso de ser cierto ejecuta la función ayuda y sale
indicando una terminación normal.

Si PATRON (primer parámetro según hemos descrito


en la linea 15) es “-a”, se muestra el autor siguiendo
el mismo mecanismo explicado en el párrafo anterior
para la opción “-h”.

En la linea 56 se controla que no nos haya llegado


menos de dos parámetros, en tal caso, se ejecuta
la función noparams, seguidamente, en el if de la
linea 60 averiguamos si existe el directorio sobre el
que queremos hacer la búsqueda, en caso de
existir se muestra una linea vacía, el comando
find con la dirección del directorio sobre el que
queremos efectuar la búsquda seguido del patrón
(comienzo del nombre del archivo que estamos
buscando) una nueva linea en blanco y mediante exit
$? confiamos la salida de nuestro script al resultado
producido por find. En caso que la condición de
existencia del directorio sea falsa (linea 67)
hacemos una llamada a la función nodir y salimos
indicando una terminación anormal.

Ejecución y pruebas

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio
$ encontrar index public_html
$

En siguientes artículos sobre Bash veremos los


mecanismos para usar parámetros en las
funciones, asimismo veremos la forma de articular
datos de retorno de las mismas.

Espero y deseo que este post haya sido de utilidad


para vosotros.

Comparte para difundir

Si te ha gustado nuestro contenido ahora puedes


ayudar a difundirlo en las redes sociales de manera
sencilla usando los siguientes botones:

% Comparte # Twitea Envía

Te puede gustar Enlaces Patrocinados por Taboola

Conviértete en una máquina quemagrasas.


Solo necesitas 10 minutos
Descárgalo en la App Store | 8fit

Los Casinos ruegan que no haga esto. Pero


no pueden impedírselo.
Slotomania : Download app

Este selfie drone que cabe en el bolsillo es


el mejor invento del 2018
Drone X Pro

Este dron de $99 es la invención más


impactante de 2018
DroneX Pro

El nuevo smartwatch que monitoriza tu


salud arrasa en el país
HealthWatch

11 bebidas cancerinogenas que debes evitar


Health & Human Research

Noticias Relacionadas por Taboola

Acelerar Ubuntu: Optimiza su rendimiento con


estos sencillos pasos

¿Cómo instalar Wine en Ubuntu 18.04 LTS?

CATEGORÍAS: Linux

Pedro Ruiz Hidalgo


Programando desde 1984, he
simultaneado la docencia con la
ingeniería de datos, dedicándome
generalmente a la programación para
empresas. En la actualidad me dedico
al desarrollo de aplicaciones
empresariales para la web y el
aseguramiento de datos y
transmisiones. Trabajo activamente
por programación mediante
frameworks y la estandarización de
los procedimientos. Entre mis
aficiones y como complemento a mis
conocimientos hablo y traduzco en
Interlingua.

LUBUNTU 17.04 PIERDE SU VERSIÓN

POWERPC DE 32 BITS ›

‹ SCREENLETS SE ACTUALIZA REPARANDO

PROBLEMAS CON UBUNTU 16.04

Un comentario

Responder a josea
josea dijo
hace 2 años

Hola,
muy interesante y muy clarito.
Solo un apunte; falta un $ en la línea
68 frente a la variable EXIT_BAD.
Voy a seguir aprendiendo seguro
con tus artículos.

DEJA UN COMENTARIO

Tu dirección de correo electrónico no será


publicada. Los campos obligatorios están
marcados con *

COMENTARIO

NOMBRE*

CORREO ELECTRÓNICO*

ACEPTO LOS TÉRMINOS DE PRIVACIDAD*

PUBLICAR COMENTARIO

! " # $ ! "

RECIBE LAS NOVEDADES EN TU


CORREO ELECTRÓNICO
Únete a Ubunlog gratis y recibe las últimas noticias
sobre Ubuntu en tu correo electrónico.

Correo electrónico Suscribirse

Artículos destacados

Cómo instalar Gitlab en nuestro


servidor con Ubuntu

Qué ultrabook comprar para instalar


Ubuntu

Juegos Open Source interesantes


que puedes disfrutar en Linux

Cómo instalar y ejecutar Photoshop


CC en Ubuntu

Índice del artículo

– 1 Definir funciones
– 2 Análisis del script
– 2.1 Definiciones
– 2.2 Funcionalidad
– 2.3 Ejecución y pruebas

SECCIONES · EQUIPO EDITORIAL · AVISO LEGAL ·


LICENCIA · PUBLICIDAD · CONTACTO

También podría gustarte