13 Scripts Linux

  • Upload
    dzier

  • View
    12.558

  • Download
    5

Embed Size (px)

DESCRIPTION

Presentacion de la clase de Linux, creada por eduardo gallardo

Citation preview

Scripts - GNU/Linux

Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

1

Scripts - Parmetros

El Shell ... Provee herramientas para manejo de variables. (Se vieron en el captulo 11) Permite utilizar herramientas para manejo de ciclos y para estructuras condicionales. Adems de recibir y manipular parmetros. Los scripts pueden recibir y manipular parmetros que son referenciados dentro de los Scripts como $1, $2, etc. El conjunto de todos los parmetros est representado por $*. La cantidad de parmetros est representada por $#. El comando shift permite eliminar el primer parmetro de la lista, y correr todos los parmetros. El comando set nos permite ver todas las variables de entorno. Pero adems, nos permite asignarle valor a los parmetros. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Parmetros ...

Scripts Ejemplos Parmetros

Ejemplo 1: echo "Cantidad de parmetros: $#" echo "Primer parmetro: $1" shift echo "Segundo parmetro $1" shift echo "El resto de los parmetros $*" Ejemplo 2: set Viva GNU Linux echo "Primer parmetro: $1" echo "Segundo parmetro: $2" echo "Tercer parmetro: $3" Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control

IF: Permite ejecutar un conjunto de comandos solamente si se cumple una determinada condicin. La sintaxis es. if [ condicion ]; then comandos [else comandos] fi El else es opcional. Los corchetes [ ] en la condicin son un comando en si mismo, tambin llamado test. Para ms informacin: man test. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)

IF (Cont): Permite ejecutar un conjunto de comandos solamente si se cumple una determinada condicin. Las condiciones pueden ser: comando test, otros programas que devuelvan un 0 1, o true o false. Las condiciones sern de este estilo: !condicion: Si condicin es falsa. condicion1 -a condicion2: Las dos condiciones son verdaderas. condicion1 -o condicion2: Una de las dos condiciones es verdadera. cadena-de-caracteres: La cadena no esta vaca. -z cadena-de-caracteres: La cadena esta vaca. cadena = cadena: Las dos cadenas son iguales. cadena != cadena: Las cadenas son distintas. entero -eq entero: Los enteros son iguales. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control - Ejemplo IFEjemplo IF: Enva un mensaje indicando si hay 1 o ms usuarios conectados. cuantos=who | wc -l if [ \$cuantos -gt 1 ]; then echo "Hay ms de un usuario conectado" else echo "Slo t ests conectado" fi Comentarios: Primero se guarda la cantidad de usuarios conectados al sistema en la variable cuantos. Ojo con las comillas por que nos permite utilizar la salida de los comandos en nuestro cdigo Luego utilizamos la estructura de if para compararlo con 1, la opcin -gt del comando test significa mayor que. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)

FOR: Es una estructura que permite una iteracin durante un nmero determinado de veces. La sintaxis es: for variable in lista; do comandos done La variable, cuando se la coloca al lado del for, no lleva el signo $ adelante, pero si en los comandos se hace referencia a ella, se debe escribir $variable. La lista puede ser: Una lista de nmeros. Ej: 1 2 3 4 Una lista de archivos. Ej: *.java Una lista de argumentos. Ej: $* Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)

FOR: Es una estructura que permite una iteracin durante un nmero determinado de veces. La sintaxis es: for variable in lista; do comandos done La variable, cuando se la coloca al lado del for, no lleva el signo $ adelante, pero si en los comandos se hace referencia a ella, se debe escribir $variable. La lista puede ser: Una lista de nmeros. Ej: 1 2 3 4 Una lista de archivos. Ej: *.java Una lista de argumentos. Ej: $* Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)

WHILE: Es una estructura que permite una iteracin hasta que una determinada condicin no se cumpla. La sintaxis: while [ condicion ]; do comandos done Con respecto a la condicin, es equivalente a la del if. while [ "$*" ]; do echo $1 shift done Ojo que while espera slo un parametro por ello las . Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)

CASE: Es una estructura que permite realizar distintas acciones segn el valor de una determinada variable. La sintaxis: case $variable in patron1) comandos ;; patron2) comandos ;; esac Con respecto al patrn: Es similar a los metacaracteres utilizados por Shell: Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)

CASE: (Cont.) Con respecto al patrn: (Cont.) Es similar a los metacaracteres utilizados por Shell: (Cont.) * referencia a cualquier cadena. ? referencia a caracter. [ ] referencia a un rangos. \ permite escapar valores especiales. permite escapar cadenas completas. | permite realizar un o (OR).

Ejemplo de Case: Modificar funcionamiento del comando cal. Cal nos permite visualizar calendarios. Por defecto nos permite ver el calendario del mes actual. Si agregamos un nmero, nos muestra el calendario de ese ao. Si le agregamos 2 parmetros, nos muestra el calendario de ese ao en ese mes. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)

CASE: (Cont.) Ejemplo de Case: Modificar funcionamiento del comando cal. (Cont.) Problemas de cal: No entiende nombres de meses (enero, febrero, etc). Al ejecutar cal 10 la salida ser el calendario del ao 10, no del mes 10 del ao actual, que es lo que esperaramos. Solucin: Realizar un Script que permita obtener un nuevo comando (nuevocal) que tenga estas funcionalidades. Ver Solucin.

case $# in 0) set date # Si no vino ningn parmetro, m=$2 # mostramos el calendario del mes actual y=$6 # y del ao actual. ;; Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)CASE: (Cont.) Solucin: 1) m=$1 # Si vino un slo parmetro, set date # mostramos el calendario de ese mes y=$6 # y del a~no actual. ;; 2) m=$1 # Si vinieron dos parmetros, y=$2 # mostramos el calendario de ese mes y a~no. ;; esac case $m in jan*|Jan*|ene*|Ene*) m=1 ;; feb*|Feb*) m=2 ;; mar*|Mar*) m=3 ;; apr*|Apr*|abr*|Abr*) m=4 ;; Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)CASE: (Cont.) Solucin: (Cont.) may*|May*) m=5 ;; jun*|Jun*) m=6 ;; jul*|Jul*) m=7 ;; aug*|Aug*|ago*|Ago*) m=8 ;; sep*|Sep*) m=9 ;; oct*|Oct*) m=10 ;; nov*|Nov*) m=11 ;; dec*|Dec*|dic*|Dic*) m=12 ;; [1-9]|10|11|12) ;; # El mes era numrico. *) y=$m; m=""; # Slo vino el ao. esac # Llamamos al calendario con el mes que elegimos. cal $m $y Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)Funciones Una funcin es un conjunto de instrucciones encerradas en un bloque de cdigo, es una caja negra que hace determinado trabajo. Deben ser declaradas antes de poder llamarlas, y para llamarlas alcanza con tipear su nombre. Sintaxis: # declaracion de funcion funcion () { comandos } # declaracion alternativa. function funcion { comandos } funcion # Llamado a funcion Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Scripts Estructuras de Control (Cont.)Funciones (Cont.) Reciben sus parmetros en $1, $2, $*, etc. Devuelven valores entre 0 y 255. Instruccin return. El valor que devuelven puede ser accedido en el script en la variable $?. Normalmente, las funciones acceden a variables globales, para poder usar locales se debe usar la instruccin de shell local. Ejercicio: Desarrollar una calculadora que sume, multiplique y divida. Ver solucin.

Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Consultas?

Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

17