Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Importando funciones bash desde un archivo

Un colega el dia de ayer me comento (via email)…

Hey Edwin estoy preparando unos scripts en bash.. el detalle es que estos scripts ya estan bastante largos y me gustaria separar las funciones de los scripts que tengo en archivos independientes…
Con el fin de reutilizar codigo en otros scripts.. se puede..?
Como coƱos importo las funciones!

Este fue el correo que le conteste:

En la parte frontal (oseace la parte de arriba) de tu script principal (despues del #!/bin/bash)… agrega lo siguiente, teniendo en mente esto ( el punto en bash es lo mismo que una directiva include en lenguaje C):

. /ruta/a/fichero_con_funciones.sh

No pierdas de vista el espacio entre el punto y la ruta al fichero de funciones.

Ejemplo de todo lo anterior:

Primero definimos el fichero de variables(o bien tambien lo puedes llenar con funciones):

j4nusx@(none):~$ more variables.sh
X="3"
Y="3"

Ahora definimos un script que mande a llamar a dichas variables (aunque tambien podriamos mandar a llamar funciones!)

j4nusx@(none):~$ more ejemplo.sh
#!/bin/bash
. ./variables.sh
suma(){
        echo  "$X + $Y" | bc
}

resta(){
        echo "$X - $Y" | bc
}

multiplicacion(){
        echo "$X * $Y" | bc
}

#############################
# Aqui inicia nuestro programita shell
echo "La suma de X y Y es:"
suma

echo "La resta de X y Y es:"
resta

echo "La multiplicacion de X y Y es:"
multiplicacion

Ahora corramos nuestro ejemplo…..

j4nusx@(none):~$ chmod 755 ./ejemplo.sh && ./ejemplo.sh
La suma de X y Y es:
6
La resta de X y Y es:
0
La multiplicacion de X y Y es:
9
j4nusx@(none):~$

Edwin Plauchu

October 17, 2008 @ 6:14 pm

Esta es la version mejorada :p

j4nusx@(none):~$ more ejemplo.sh
#!/bin/bash
. ./variables.sh
suma(){
echo “$X + $Y” | bc
}

resta(){
echo “$X - $Y” | bc
}

multiplicacion(){
echo “$X * $Y” | bc
}

SUMA=`suma`
echo “La suma de X y Y es:$SUMA”

RESTA=`resta`
echo “La resta de X y Y es:$resta”

MULTI=`multiplicacion`
echo “La multiplicacion de X y Y es:$MULTI”

RSS feed para comentarios en esta entrada · TrackBack URI

Comenta