Inicio wiki
Aula Virtual
 Administración de Sistemas Operativos
Inicio ASO Aula Virtual

Vistas
  •   Shell - Funciones
De ASO

Una funci贸n es un bloque de c贸digo que permite su reutilizaci贸n de una forma f谩cil y sencilla. Se recomienda que el nombre de la funci贸n sea lo m谩s descriptivo posible y que describa lo m谩s fielmente posible el funcionamiento de la funci贸n. Para definir una funci贸n se hace a trav茅s de la palabra reservada function, seguida del nombre utilizado como identificador de la funci贸n. A continuaci贸n, se declara la instrucci贸n o conjunto de instrucciones que se ejecutar谩n cada vez que se realiza la llamada a la funci贸n, como siempre entre llaves.

#!/bin/bash 
         
function mostrar_mensaje() {
       echo 鈥淗ola mundo!鈥
}

mostrar_mensaje;

Opcionalmente las funciones pueden aceptar uno o m谩s valores de entrada, conocidos como par谩metros de la funci贸n. A continuaci贸n se muestra la funci贸n suma que recibe dos variables y las suma.

#!/bin/bash
function suma (){
       resultado=$(expr $a + $b)
       echo "a + b =" $resultado
}

a=5
b=10
suma $a $b

Los par谩metros de la funci贸n se pueden utilizar a trav茅s de su nombre o a trav茅s de $1 (primera variable), $2 (segunda variable),... El ejemplo anterior quedar铆a de la siguiente forma:

#!/bin/bash
function suma (){
       resultado=$(expr $1 + $2)
       echo "a + b =" $resultado
}

a=5
b=10
suma $a $b

Una funci贸n puede devolver uno o m谩s valores. Si devuelve un valor entero se llama funci贸n y en cualquier otro caso se llama procedimiento. Tal y como puede ver en el siguiente ejemplo, para devolver un valor entero se utiliza return.

#!/bin/bash 
function suma (){
       c=$(expr $a + $b)
       return $c
}

a=5
b=10
suma $a $b
resultado=$?

echo $resultado

Y si desea devolver un valor string o m谩s de un valor entonces se utiliza un procedimiento. A continuaci贸n, a modo de ejemplo, se muestra una funci贸n que cambia un n煤mero entero a hexadecimal:

#!/bin/bash 
convertir_en_hex() {
 case $valor in
       0) valor="0";;
       1) valor="1";;
       2) valor="2";;
       3) valor="3";;
       4) valor="4";;
       5) valor="5";;
       6) valor="6";;
       7) valor="7";;
       8) valor="8";;
       9) valor="9";;
       10) valor="a";;
       11) valor="b";;
       12) valor="c";;
       13) valor="d";;
       14) valor="e";;
       15) valor=f;;
 esac
}

valor=2
convertir_en_hex $valor
echo 鈥渆l resultado es $valor鈥