El Manual de BASH Scripting Básico para Principiantes/El clásico (For)
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