La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.

Presentaciones similares


Presentación del tema: "2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre."— Transcripción de la presentación:

1 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre unidad de aprendizaje: Introducción a los SCRIPTS Programación Aplicada

2 2© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Objetivos  Objetivos de la clase  Programa rutinas utilizando los diferentes tipos de variables, constantes, operadores y sentencias de control en lenguaje Bash.

3 3© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Como en prácticamente todos los lenguajes de programación, en el BASH de GNU/LINUX se pueden utilizar funciones para agrupar trozos de código o rutinas de una manera más lógica.  Esto permitirá organizar un SCRIPT en unidades lógicas de manera que sea más fácil mantenerlo y programarlo (y entenderlo), sin necesidad de estar repitiendo múltiples veces una misma porción de código.

4 4© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  El uso de FUNCIONES en BASH, nos va a ayudar en: Tareas en las que debamos repetir cierto número de veces lo mismo, sin necesidad de duplicar líneas. Desglosar todo lo que vayamos a hacer, en conjuntos de acciones, resolviendo cada problema individualmente (programación modular).

5 5© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Las FUNCIONES, a diferencia de los SCRIPTS, se ejecutan dentro de la memoria del propio proceso BASH, por lo que resultan más eficientes que ejecutar SCRIPTS separados, pero tienen el inconveniente de que tienen que estar siempre cargadas en la memoria del proceso BASH para poder utilizarse.

6 6© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Actualmente, debido a la gran cantidad de memoria que tienen los computadores, el tener FUNCIONES cargadas en la memoria de BASH tiene un costo insignificante.  Las funciones de BASH son una extensión de las funciones que existen desde el BOURNE SHELL.

7 7© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Así, en BASH las funciones se pueden definir básicamente de dos maneras:  Al estilo del BOURNE SHELL: function nombre_de_función(){ comandos_de_la_función ….. }

8 8© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  O bien, al estilo del C SHELL:  NO existe diferencia entre ellos, y se utilizarán indistintamente ambos formatos. nombre_de_función(){ comandos_de_la_función ….. }

9 9© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Para ejecutar una FUNCIÓN simplemente basta escribir su nombre seguido de argumentos, tal como si se tratará de un comando.  Los argumentos actúan como PARÁMETROS DE LA FUNCIÓN.  En caso de que sea necesario pasar varios parámetros a la función, se especificaran uno detrás de otro separados por espacios.

10 10© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejemplo de funciones en BASH #!/bin/bash #función para listar el directorio function Listar(){ if test –d $1 then ls –l $1 fi } #PRINCIPAL clear echo –e “Ingresar un Directorio: \c” read dir Listar $dir#Llamada a la función Listar

11 11© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejemplo de funciones en BASH #!/bin/bash function Salir(){ exit } function Saludo(){ echo –e “Hola Mundo!!!…\n” } #PRINCIPAL clear Saludo#Llamada a la función Saludo Salir#Llamada a la función Salir

12 12© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Las funciones en BASH, al igual que un SCRIPT devuelven un valor, el que podemos establecer con la sentencia exit.  Las funciones en BASH pueden “retornar” un valor por medio de la sentencia return, que se usa de la misma manera que exit.  La sentencia return solo sirve para retornar enteros entre 0 y 255.

13 13© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Veamos un ejemplo de FUNCIÓN que retorna un valor: #!/bin/bash function suma(){ c=$(expr $1 + $2) return $c } #PRINCIPAL suma 100 150 echo –e “suma=$?\n”

14 14© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Podemos definir funciones en la línea de ordenes, de la siguiente manera: [alumno@localhost ~]$ function saludo(){ >echo hola >} [alumno@localhost ~]$ function salir(){ >exit >} [alumno@localhost ~]$ declare –f declare –f salir declare –f saludo

15 15© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Notar que para “entrar” las líneas de la función se debe presionar +.  Podemos ver que funciones tenemos definidas en una sesión usando el comando declare –f. El SHELL imprime las funciones, y su definición, ordenadas alfabéticamente.  Si preferimos sólo el nombre de las funciones podemos usar el comando declare –F.

16 16© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Funciones en BASH  Si una función tiene el mismo nombre que un SCRIPT o ejecutable, la FUNCIÓN tiene preferencia.  Para borrar una FUNCIÓN podemos usar el comando unset –f nombre_función.

17 17© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Los PARÁMETROS POSICIONALES  Los PARÁMETROS POSICIONALES son los encargados de recibir los argumentos de un SCRIPT y los PARÁMETROS DE UNA FUNCIÓN.  Los nombres de los PARÁMETROS POSICIONALES son 1, 2, 3, etc. por lo que para acceder a ellos utilizaremos $1, $2, $3, etc.

18 18© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Los PARÁMETROS POSICIONALES #!/bin/bash function impParam(){ echo –e “Nombre del SCRIPT : $0” echo –e “Primer parámetro : $1” echo –e “Segundo parámetro : $2” echo –e “TODOS los parámetros: $*” } #PRINCIPAL clear impParam hola a todo el mundo

19 19© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Los PARÁMETROS POSICIONALES  Además, se tiene el PARÁMETRO POSICIONAL 0 que almacena el nombre del SCRIPT donde se ejecuta.  Los valores de los PARÁMETROS POSICIONALES no es posible modificarlos, sólo se pueden leer, si se intenta asignarles un valor se produce un error.

20 20© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Variables locales y globales  Por defecto, los PARÁMETROS POSICIONALES son locales al SCRIPT o FUNCIÓN y no se pueden acceder o modificar desde otra FUNCIÓN.  A diferencia de los PARÁMETROS POSICIONALES, el resto de variables que definimos en un SCRIPT o FUNCIÓN son globales, es decir, una vez definidas en el SCRIPT son accesibles (y modificables) desde cualquier FUNCIÓN.

21 21© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Variables locales y globales #!/bin/bash function impParam(){ echo –e “Nombre del SCRIPT : $0” echo –e “Primer parámetro : $1” echo –e “TODOS los parámetros: $*” } #PRINCIPAL clear impParam hola a todo el mundo $1=hola

22 22© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Variables locales y globales  En el ejemplo anterior la sentencia marcada da el siguiente mensaje de error:  Las variables por defecto son globales en BASH, por lo que si queremos que una variable sea local, tenemos que definirla como local dentro de la función:./parametros: line 10: =hola: commnad not found

23 23© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Variables locales y globales  El modificador local sólo se puede usar dentro de las funciones, NO en los SCRIPTS.  Por último, las variables globales también se pueden definir dentro de una FUNCIÓN. func(){ var1=2 #Variable global local var2=23 #define una variable local }

24 24© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Variables locales y globales #!/bin/bash function f1(){ v1=25 local v2=57 } function f2(){ echo –e “v1=$v1” } #PRINCIPAL f1 f2 echo –e “v1=$v1” echo –e “v2=$v2”

25 25© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Las variables $*, $@ y $#  La variable $# almacena el número de argumentos o parámetros recibidos por el SCRIPT o la FUNCIÓN.  El valor almacenado en $# es de tipo cadena de caracteres.  Tanto $* como $@ nos devuelven los argumentos recibidos por el SCRIPT o FUNCIÓN.

26 26© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Las variables $*, $@ y $# #!/bin/bash function impParam(){ echo –e “Nombre del SCRIPT : $0” echo –e “Primer parámetro : $1” echo –e “TODOS los parámetros: $*” echo –e “Cantidad de parámetros: $#” } #PRINCIPAL clear impParam hola a todo el mundo

27 27© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Librería de FUNCIONES  A la hora de programar SCRIPTS de SHELL no es que existan herramientas para declarar librerías, pero se pueden simular de cierta manera colocando el código de FUNCIONES en archivos de SCRIPTS separados.  El siguiente ejemplo corresponde a un ejemplo de uso de librerías, usando un archivo con las funciones que queremos “exportar”:

28 28© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Librería de FUNCIONES  Se graban en el archivo librería.sh las FUNCIONES que se desean “exportar”. [alumno@localhost ~]$ vi librería.sh function saludar(){ echo –e “Hola\n” } function salir(){ exit }

29 29© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Librería de FUNCIONES  Se incluye el archivo librería.sh en el SCRIPT en donde deseemos ocupar las FUNCIONES “importadas”. #!/bin/bash #libreria.sh contiene las funciones a ser utilizadas source librería.sh …..

30 30© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Arreglos en BASH  En BASH es posible definir arreglos (arrays), pero únicamente unidimensionales.  En BASH no hay un limite máximo en el tamaño de un arreglo, ni es necesario que los miembros de un arreglo se indexen de forma contigua.

31 31© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Arreglos en BASH  En BASH las variables de tipo arreglo se declaran por medio de:  En esta definición tamaño hace referencia a la cantidad de elementos del arreglo. declare –a nombre_arreglo[tamaño]

32 32© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Arreglos en BASH  En BASH podemos asignar datos o valores a un arreglo de la siguiente forma:  En esta definición índice hace referencia a la posición que el valor ingresado tendrá dentro del arreglo. nombre_arreglo[índice]=valor

33 33© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Arreglos en BASH  En BASH es posible referenciar los datos del arreglo a través de la expresión:  Es posible referenciar a TODOS los datos del arreglo de una sola vez por medio de la orden: ${nombre_arreglo[índice]} ${nombre_arreglo[*]}

34 34© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Arreglos en BASH  El total de elementos del arreglo se puede determinar usando: ${nombre_arreglo[@]}

35 35© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejemplos de uso de arreglos en BASH #Función para colocar datos en #el arreglo function LLenar_arreglo(){ local i=1 while test $i –le 5 do echo –e “Numero: \c” read A[$i] i=$(expr $i + 1) done }

36 36© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejemplos de uso de arreglos en BASH #Función para mostrar los datos #del arreglo function Mostrar_arreglo(){ local i=1 while test $i –le 5 do echo –e “A[$i]=${A[$i]}\n” i=$(expr $i + 1) done }

37 37© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejemplos de uso de arreglos en BASH #PRINCIPAL #!/bin/bash clear declare –a A[5] LLenar_arreglo Mostrar_arreglo

38 38© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Resumen  Resumen de la clase  Como en prácticamente todos los lenguajes de programación, en el BASH de GNU/LINUX se pueden utilizar funciones para agrupar trozos de código o rutinas de una manera más lógica, de manera que sea mas fácil mantenerlo, programarlo y entenderlo, sin necesidad de estar repitiendo múltiples veces una misma porción de código.  En BASH las funciones se pueden definir básicamente de dos maneras: al estilo del BOURNE SHELL o bien al estilo del C SHELL.  Las funciones en BASH, al igual que un SCRIPT devuelven un valor, el que podemos establecer con la sentencia exit, y también pueden “retornar” un valor por medio de la sentencia return, que se usa de la misma manera que exit.

39 39© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Resumen  Resumen de la clase  En BASH es posible definir arreglos, pero únicamente unidimensionales.  Las operaciones con arreglos en BASH son las usuales de cualquier otro lenguaje de programación: se pueden ingresar datos al arreglo, se pueden leer datos del arreglo, se puede hacer referencia a un dato en particular del arreglo, etc.


Descargar ppt "2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre."

Presentaciones similares


Anuncios Google