educación, informática y demás

Shell scripts

Bucles for

En la siguiente entrada vamos a realizar una serie de ejemplos de scripts que utilizan bucles for para recorrer listas de elementos y realizar alguna acción con cada uno de estos elementos.

Un bucle for permite recorrer una lista de elementos, realizando una serie de acciones (comandos en el cuerpo del bucle) con cada elemento de la lista.

PARA <variable> EN <lista> HACER

for <variable> in <lista>; do

Cuerpo del bucle

done

El bucle for recorre la lista proporcionada siguiendo el siguiente proceso: Al inicio de cada ejecución, asigna a la variable el elemento que le corresponde de la lista, comenzando por el primero, y ejecuta el cuerpo del bucle. Cuando termina de ejecutar el cuerpo del bucle, comprueba si hay más elementos en la lista. Si no hay más elementos, termina la ejecución del bucle y continua con el siguiente comando. Si hay más elemento, repite el proceso con el siguiente elemento de la lista.

Varios ejemplos simples

Modificación

Corregido

Vamos a comprobar si el usuario existe en el sistema…

Vamos a darle otra vueltita.. si el usuario existe, vamos a mostrar información extendida del usuario, en concreto mostraremos su UID, GID, ruta del directorio personal y la shell que utiliza.

Está bien pero si queremos mejorar un poco la legibilidad del script podríamos utilizar una función que se encargue de mostrar la información de un usuario dado por parámetro o bien usando la variable usuario del for – es una variable global del script.

Vamos con la primera variante, utilizamos una función que no recibe parámetro, sino que toma el valor de la variable global usuario, que es la que se está utilizando en el bucle for.

La versión con el nombre del usuario por parámetro sería la siguiente

¿Y si recibieramos la lista de usuarios a mostrar por par´ámetro?. Tan solo tendríamos que cambiar la variable listaUsuarios para que almacene la lista de parámetros que se pasan al script

Nueva versión… ¿qué hace ahora el script si introducimos este cambio?

Tenemos que determinar que hace el comando que está entre paréntesis, puesto que la salida de ese comando será el contenido de la variable listaUsuario.

Ejemplo 01

Y si me piden del 1 al 100

Ejemplo 02

Ejemplo 03

Ejemplo 04

Ejemplo 05

Ejemplo 06

Ejemplo 07

Ejemplo 08

Ejemplo 09

Ejemplo 10

Dejar una respuesta