Ir al contenido

El Manual de BASH Scripting Básico para Principiantes/El clásico (For)

De Wikilibros, la colección de libros de texto de contenido libre.
← El clon (Case-Esac) El clásico (For) El ciclo (While) →
El Manual de BASH Scripting Básico para Principiantes


Sentencia for-if

[editar]

El ciclo for es ampliamente usado en programación en la mayoría de los lenguajes, en el cual por cada elemento en determinada variable se repetirán determinadas acciones, esto hasta que lo haya hecho con todos los elementos indicados, entonces el ciclo habrá terminado y solo entonces.

Ejemplo de uso

[editar]
for a in $x
do
        if [ $a = algo ]
        then
                echo "Algo... es igual a algo"
        fi
done

Uso práctico

[editar]

Para poner un ejemplo fácil, analicemos el siguiente algoritmo:

Tengo 10 manzanas.
Por cada manzana que tenga, la tomaré y verificaré que no tenga un gusano:
Si lo tiene, tiraré la manzana,
si no, la guardaré en el refrigerador.

Imaginemos que mis 10 manzanas son los 10 archivos en determinada carpeta, llamados respectivamente desde el número 1 hasta el 10 (sus nombres serían entonces 1, 2, 3, 4... y así hasta llegar al 10 respectivamente, esto va para cada archivo).

Imaginemos después que si el archivo (la manzana) contiene un gusano (la variable $gusano), entonces la variable ya mencionada tendrá un valor igual a 1, y si no, tendrá un valor igual a 0.

Uso práctico en BASH

[editar]
#!/bin/bash
# Manzana Parser: El script importa la variable guardada en cada archivo 
#                 y determina si "tiene o no gusano"

## Verificando que los parámetros sean válidos
if [ $# -ne 1 ]
then
        echo "Haz el favor de sólo especificar un directorio"
        exit 1;
elif [ ! -d $1 ]
then
        echo "El archivo $1 especificado no es un directorio, abortando."
        exit 1;
fi

##Cambiando al directorio especificado

lastdir=$PWD
cd $1

## Inicializando aplicación

contador=0

for archivo in `ls $1`
do
        if [ -f $archivo ]
        then
                let contador=contador+1
        fi
done

for manzana in $contador
do
        if [ -f $archivo ]
        then
                source $archivo
                if [ $gusano = 0 ]
                then
                echo "La manzana $archivo no tiene gusano, guardando en $HOME/refrigerador"
                mv $archivo $HOME/refrigerador
                else
                echo "La manzana $archivo tiene gusano, eliminando la manzana"
                rm $archivo
                fi
        fi
done

## regresando al directorio anterior|

cd $lastdir

exit 0