Estructuras de Control Cecilia Curlango Rosas Estructuras de Control Sintáxis -- while -Ejecuta una serie de mandos mientras sea verdadera una condición. while condición do enunciados done Cecilia Curlango Rosas Estructuras de Control Ejemplo -- while -#!/bin/bash echo "Adivina mi animal favorito?" read animal while [ "$animal" != "delfin" ]; do echo "Lo siento, vuelve a intentarlo" read animal done echo "Bieeeeeeen, el $animal es mi favorito" exit 0 Cecilia Curlango Rosas Estructuras de Control Ejemplo -- while -- (Sustitución Aritmética) #!/bin/bash repeticion=1 while [ "$repeticion" -le 20 ] do echo "Otra vez" repeticion=$(($repeticion+1)) done exit 0 Cecilia Curlango Rosas Estructuras de Control Sintáxis -- until -El ciclo until similar a while pero con la condición inversa. En otras palabras, el ciclo continua hasta que la condición se haga verdadera. until condición do enunciados done Cecilia Curlango Rosas Estructuras de Control Ejemplo -- until -#!/bin/bash until who | grep "$1" > /dev/null do sleep 60 done # anunciar la llegada del usuario echo -e \\a echo "***** $1 acaba de conectarse *****" exit 0 Cecilia Curlango Rosas Estructuras de Control Sintáxis -- case -Compara la variable con varios patrones y ejecuta diferentes enunciados dependiendo del patrón que concordó. case variable in patrón [ | patrón] ...) enunciados;; patrón [ | patrón] ...) enunciados;; ... esac Cecilia Curlango Rosas Estructuras de Control Ejemplo -- case -#!/bin/bash echo "Es de dia? Contesta si o no" read esDia case "$esDia" "si") echo "no") echo "s" ) echo "n" ) echo * ) echo esac exit 0 Cecilia Curlango Rosas in "Buenos dias";; "Buenas tardes";; "Buenos dias";; "Buenas tardes";; "Lo siento, no entiendo";; Estructuras de Control Ejemplo -- case -#!/bin/bash echo "Es de dia? Contesta si o no" read esDia case "$esDia" in "si" | "s" | "Si" | "SI") "n"* | "N"*) * ) esac exit 0 Cecilia Curlango Rosas echo "Buenos dias";; echo "Buenas tardes";; echo "Lo siento, no entiendo";; Estructuras de Control Ejemplo -- case -#!/bin/bash echo "Es de dia? Contesta si o no" read esDia case "$esDia" in [sS] | [sS][iI] ) [nN] | [nN][oO] ) * ) esac exit 0 Cecilia Curlango Rosas echo echo echo exit "Buenos dias";; "Buenas tardes";; "Lo siento, no entiendo" 1;; Ejercicio Escribir un script en el que solicite al usuario el año de su nacimiento y como respuesta indique el animal que le corresponde a este año según el calendario Chino. El sitio http://www.new-year.co.uk/chinese/calendar.htm contiene información sobre el calendario Chino. Cecilia Curlango Rosas Estructuras de Control Operadores Relacionales -- AND -Se ejecuta el primer enunciado empezando desde la izquierda y si regresa true, continua con el siguiente hasta terminar o encontrar un false. enunciado1 && enunciado2 && enunciado3 && ... Cecilia Curlango Rosas Estructuras de Control Operadores Relacionales -- OR -Se ejecuta cada enunciado empezando desde la izquierda y continua con los siguientes hasta terminar o encontrar uno true. enunciado1 || enunciado2 || enunciado3 || ... Cecilia Curlango Rosas Estructuras de Control Funciones Para regresar valores numericos, se utiliza return. Si no tiene return, regresa el valor del último mando ejecutado. Nombre_funcion () { enunciados } Cecilia Curlango Rosas Estructuras de Control Ejemplo Parte A -- funciones -#!/bin/bash si_o_no() { echo "Parametros son $*" while true do echo -n "Escribe si o no " read x case "$x" in s | si ) return 0;; n | no ) return 1;; *) echo "Contesta si o no" esac done } Cecilia Curlango Rosas Estructuras de Control Ejemplo Parte B -- funciones -echo "Parametros originales son $*" if si_o_no "Te llamas $1" then echo "Hi $1" else echo "Olvidalo" fi exit 0 Cecilia Curlango Rosas Ejercicio Escribe un script que se llame “datos” y responda como se muestra a continuación: $datos mi_archivo mi_archivo es un (directorio o archivo o enlace) tiene xxxx bytes de longitud pertenece a xxxx cuyo directorio de origen (HOME) es: xxxxx. Cecilia Curlango Rosas Tarea #5 Parte 1 Ejercicio Escribe un script que se llame “datos” y responda como se muestra a continuación: $datos mi_archivo mi_archivo es un (directorio o archivo o enlace) tiene xxxx bytes de longitud pertenece a xxxx cuyo directorio de origen (HOME) es: xxxxx. Cecilia Curlango Rosas Tarea #5 Parte 1 Ejercicio Escriba un script para facilitar la creación de cuentas en el servidor. Se deberá capturar el nombre de la materia que deberá ser sm, tu, prog, o pooi. Además se capturará la cantidad de grupos para los que se crearán las cuentas y la cantidad de espacio en disco al que tendrá derecho cada usuario. Entonces, se creará un grupo cuyo nombre será del tipo sm100, sm200, etc. posteriormente generarán 16 cuentas por grupo. A cada cuenta se le asignará un directorio de origen que estará ubicado en /home/alumnos/grupo/usuarioXXX. Se deberá asignar automaticamente la contraseña a cada usuario y generar un archivo con el mismo nombre que el grupo en el que se almacenarán los nombres de usuario y contraseñas. Cecilia Curlango Rosas Tarea #5 Parte 4 Ejercicio Escriba un script para eliminar un grupo de cuentas como las descritas en el ejercicio anterior. Deberá solicitarse el nombre del grupo, la cuenta inicial y la cuenta final que se desea borrar. Al borrar, deberán borrarse todos los archivos de cada usuario cuya cuenta esta siendo eliminada. Cecilia Curlango Rosas Tarea #5 Parte 4