Bucles en Shell Script

Los bucles en Shell Script son muy simples:

for VARIABLE in SERIE; do
    bloque de comandos
done

En cada iteración la variable VARIABLE toma un valor de SERIE, que en caso de no contener elementos hará que no se ejecute nada y se devuelva un valor 0. En caso de que se ejecuten comandos, el resultado devuelto tras el bucle es el del último comando ejecutado.

Ejemplos de bucle:

for i in 1 2 3 4 5; do
   echo $i
done

Nota: para generar los números que se ponen después del ‘in’ se puede usar el comando seq que genera una secuencia de números si le indicamos el inicio y el final. El bucle anterios se podría poner así:

for i in $(seq 1 5); do
  echo $i
done

Ejemplo con palabras:

for palabra in uno dos tres cuatro cinco; do
  echo $palabra
done

Ejercicios

#!/bin/bash
echo "Ficheros del directorio actual y su tamaño";
ficheros=$(find -type f);
for i in $ficheros;do
        num_lineas=$(wc -l $i | cut -d" " -f1);
        echo "Nombre del fichero: $i";
        echo "Contiene $num_lineas lineas";
        echo " ";
done;
#!/bin/bash
echo "Nombres de los usuarios y sus grupos";
nom_usuario=$(who | cut -d" " -f1 | sort | uniq);
for i in $nom_usuario; do
        gid=$(grep "\b$i\b" /etc/passwd | cut -d":" -f4);
        grupo=$(cut -d":" -f1,3  /etc/group | grep "\b$gid\b" | cut -d":" -f1);
        echo "El usuario es $i y su grupo es $grupo";
done;
#!/bin/bash

# Borrar usuarios con IDs comprendidos entre dos números pasado por parámetro

for i in $(seq $1 $2); do
        nombre=$(cut -d":" -f1,3 /etc/passwd | grep "\b$i\b" | cut -d":" -f1);
        $(userdel -r $nombre);
done;

Esto es todo, ya sabemos hacer bucles en Shell Script 😉

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post