educación, informática y demás

GNU/Linux bash, Shell scripts

Ejemplos de uso del bucle for

Sintaxis

Recurriendo una lista

Guardando la lista en una variable

Ojo, los elementos de la lista se separan con espacios, si no los ponemos entre comillas, se generará un error en bash.

Recorriendo la lista de parámetros que se pasan al script

Vamos a suponer que nos pasan por parámetro una lista de usuarios. Es decir, nos pasan un número variable de parámetros, entre 1 y N, cada uno con el nombre de un usuario.

Vamos a aprovechar el código que ya tenemos, cambiando solo la asignación de valores a la variable listaUsuarios. En este caso, vamos a asignar a la variable listaUsuarios el valor de la variable especial $@ que contiene la lista de parámetros pasados al script.

Vamos a probarlo…

Lista vacía

Para cada elemento de la lista hacer.. pero es que no hay elementos en la lista, así que no se hace nada.

Según la ayuda del comando help, también podríamos haberlo hecho así:

Recorriendo la salida de un comando

Por ejemplo, vamos a intentar mostrar información de usuarios del sistema. Considearmos que los usuarios del sistema son aquellos que ejecutan /bin/bash.

Lo primero que deberíamos ser capaces de hacer es mostrar el nombre de dichos usuarios en pantalla.

Filtramos con grep para mostrar solo las líneas de los usuarios que usen /bin/bash.

Vamos a seguir filtrando, porque solo queremos el nombre del usuario.

Pero, los vamos a ordenar.

Hasta ahora solo hemos ejecutado comandos con tuberías. Ahora vamos a utilizar la salida de esos comandos para recorrerla en un bucle.

Otro ejemplo

Aquí hay que fijarse en el contenido de la variable lista que será la variable que recorreremos con el for. La variable contendrá la salida del comando ls ~. Esto mostrará en pantalla el contenido del directorio personal del usuario actual.

Este script recorre la lista de ficheros del directorio personal del usuario actual mostrando solo el nombre del fichero.

Vamos a mostrar el nombre de los ficheros de script que haya en el directorio personal del usuario actual.

Piénsalo un momento…

Podemos recorrer la salida de cualquier comando con un bucle for y hacer lo que queramos o necesitemos con cada elemento de la salida. Esto nos da una potencia asombrosa.

Recorriendo un fichero

En realidad, acabamos de hacerlo en uno de los ejemplos anteriores.

Vamos a crear un fichero llamado usuarios.txt

Ahora vamos a recorrerlo. Pero, ¿cómo?. ¿Sabes mostrar en pantalla el contenido del fichero usuarios.txt?. ¡Hazlo!

Ahora lo único que tenemos que hacer es recorrer la salida de ese comando con un for.

Para cada línea del fichero le asignamos la linea a la variable usuario y la utilizamos dentro del cuerpo del bucle.

Otro ejemplo

Ahora mismo estamos recorriendo la lista de líneas del fichero /etc/group. Conociendo este fichero, estamos mostrando en pantalla información de cada grupo del sistema.

Ahora, vamos a mostrar, para cada grupo del sistema, su nombre y lista de miembros.

¿Qué hace este script?

¿y este otro?

¿y este otro?

¿Qué hace esta nueva versión?

¿Qué hace este script?

Dejar una respuesta