¿Qué son las funciones?


Se puede decir que una función es un script dentro de otro script; se utilizan para definir y guardar código por nombre en la memoria del shell, para así,  ser invocado y ejecutado posteriormente.

Las funciones mejoran la programabilidad significativamente, por 2 razones principales:

  1. Cuando se invoca una función, esta ya se encuentra definida en memoria, por lo tanto se ejecuta de una manera más rápida.
  2. Las funciones son ideales para organizar a los scripts en pedazos modulares lo que hace que el código sea más fácil de desarrollar y mantener.

Se puede definir una función utilizando dos formatos:

1. Utilizando el estilo Bourne Shell. Ejemplo:

#####################################################################
#
#   DEFINICION DE FUNCION ESTILO BOURNE SHELL
#
#   function funcion
#   {
#      COMANDO_1
#      COMANDO_2
#      .
#      .
#      .
#      COMANDO_n
#   }
#
#####################################################################
#! /bin/bash

# Funcion que muestra el numero de argumentos que se le envien.

function escribeParametros
{
	# FUNCNAME es una variable de entorno que guarda el nombre de la funcion.
	printf "Hola, estoy en la funcion ${FUNCNAME}\n"

	# Despliega el contenido del archivo /etc/hosts.
	cat /etc/hosts

	# Termina funcion.
	exit 0
}

# Empieza cuerpo principal del script.

# Llamado a funcion.
escribeParametros

# Imprime el valor de terminacion de la funcion.
echo "Valor de terminacion: $?"

2. Utilizando el estilo C Shell. Ejemplo:

#####################################################################
#
#   DEFINICION DE FUNCION ESTILO BOURNE SHELL
#
#   function funcion
#   {
#      COMANDO_1
#      COMANDO_2
#      .
#      .
#      .
#      COMANDO_n
#   }
#
#####################################################################
#! /bin/bash

muestraInformacion()
{
	# Muestra información del usuario que ejecute el script a base de variables de entorno.
	echo "Usuario: $USER"
	printf "Shell: $SHELL \n"
	printf "Directorio Inicial: $HOME \n"
	echo "Host: $HOSTNAME"

	# Termina funcion.
	exit "$?"
}

# Inicia bloque principal del script.

# Llamado a funcion
muestraInformacion

# Imprime el valor de terminacion de la funcion
echo "Valor de terminacion $?"

Cuando se declara una función, el shell guarda su nombre y definición(es decir, los comandos que contiene) en memoria. Si se desea ejecutar la función después, solo hace falta escribir el nombre de la función seguida de sus argumentos, tal como si fuera un script. Ejemplo:

usuario@Linux:~$ escribeParametros "Este es un solo parametro" 

Se pueden visualizar las funciones(tanto como su definición) que se tienen guardadas dentro de una sesión utilizando el comando declare con la opción -f. Ejemplo:

usuario@Linux:~$ declare -f 

Si se requiere obtener solamente el nombre de las funciones, se puede utilizar el comando declare -F. Ejemplo:

usuario@Linux:~$ declare -F

De igual forma, una función también puede borrarse ejecutando el comando unset utilizando la opción -f seguido del nombre de la función. Ejemplo:

usuario@Linux:~$ unset -f escribeParametros

EJERCICIOS

  1. Cree un Shell Script utilizando la sintaxis Bourne Shell el cual contenga una función en la cual se cree el directorio directorioFuncion.
  2. Cree un Shell Script utilizando la sintaxis C Shell el cual contenga una funcion que despliegue en pantalla el contenido del archivo /etc/passwd.
  3. Cree un Shell Script utilizando la sintaxis Bourne Shell  el cual obtenga el nombre y directorio para la ruta estaRutaNoExiste.
  4. Cree un Shell Script utilizando la sintaxis C Shell el cual imprima el directorio actual de trabajo del usuario.
  5. Cree un Shell Script utilizando la sintaxis Bourne Shell  el cual muestre los primeros 76 caracteres del archivo /etc/shells.
  6. Cree un Shell Script utilizando la sintaxis C Shell el cual cambie su dirección actual por el diretorio raíz.
  7. Cree un Shell Script utilizando la sintaxis C Shell el cual visualice la página del manual del comando ls.
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s