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.

Contenido

[editar] Sentencia for-if

El ciclo for es ampliamente usada 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.

[editar] Ejemplo de uso

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

[editar] Uso practico

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 numero 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.

[editar] Uso practico en BASH

#!/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 "Favor de solo 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=(echo $PWD)
cd $1
 
## Inicializando aplicación
 
contador=0
 
for archivo in `ls $1`
do
        if [ -f $archivo ]
        then
                let contador=contador+1
        fi
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
done
 
## regresando al directorio anterior|
 
cd $lastdir
 
exit 0
Herramientas personales