educatica!

educación, informática y demás

Clases de informática, GNU/Linux bash, Informática, Shell scripts

Ejemplos de scripts (if, for, while, case…)

Bucle for

Hemos visto como podemos repetir la ejecución de una serie de comandos mientras se cumple una condición. Este tipo de bucles está orientado a repetir un proceso mientras se cumple una condición concreta.

Sin embargo, este tipo de bucles no se adapta de forma natural a todas las situaciones en las que hay que repetir un proceso. El ejemplo más claro es en el que se deben recorrer una lista de elementos para hacer algo con cada uno de estos elementos.

Se podría hacer con un bucle while, pero sería muchísimo más complicado que utilizar el bucle for, que está creado expresamente para este tipo de repeticiones.

En shell script, el bucle for permite recorrer una lista de elementos, pudiendo hacer algo concreto en cada repetición con un elemento concreto de la lista. Es decir, recorre una lista de elementos y realiza una acción.

Para cada elemento de la lista (uno dos tres y cuatro) el bucle for asignará a la variable de índice (elemento) un valor de la lista y ejecutará el cuerpo del bucle for (echo «Elemento: $elemento).

Usando las llaves para generar números…

Recorrer elementos en una variable…

Recorrer ficheros en el directorio…

Mostramos solo ciertos ficheros..

Vamos a mostrar, ahora, solo los ficheros con extensión sh que estén en el directorio personal del usuario actual, no en el directorio actual.

Mostramos directorios y ficheros con etiqueta propia…

Mostramos primero los directorios y después los ficheros..

Recorriendo usuarios..

Con un bucle for vamos a recerrer o mostrar los nombres de las cuentas de usuario del sistema.

Muestra la lista de usuarios, uno a uno, ordenada alfabéticamente..

Muestra la lista de usuarios normales del sistema, uno a uno, ordenada alfabéticamente..

Mostrando información de cada usuario…

Vamos a aprovechar las funciones que teníamos de userData.sh para usarlas en este script:

Creando directorio en los directorios personales de los usuarios..

Para cada usuario del sistema, es decir aquellos que ejecutan la shell /bin/bash, vamos a comprobar si existe un directorio en su directorio personal llamado educatica. Si no existe, tendremos que crearlo.

Atención este script deberá ser ejecutado como root, por tanto si creamos un directorio como root, el propietario y el grupo de este directorio será root. Sin embargo, nosotros queremos que este directorio pertenezca al usuario en cuyo directorio personal lo hemos creado. Además, también queremos que el grupo de este directorio sea el grupo principal del usuario, es decir aquel cuyo gid tiene el usuario en su línea de configuración de cuenta de usuario.

Creando directorios en los directorios personales de los usuarios..

Ahora resulta que, para cada cuenta de usuario del sistema, debemos comprobar si existen una serie de directorios en su directorio personal. Si no existe alguno de ellos, debemos crearlo y además cambiar los permisos.

Además, nos piden que comprobemos si el usuario que ejecuta el script es root. Si no es root debemos mostrar un mensaje de error y salir con un valor de retorno de error.

La lista de directorios es: educatica, backup, develop y proyectos.

Deja un comentario

Tema creado por Anders Norén