En esta entrega seguiremos con las sentencias de control del BASH, la siguiente es:
for [condición] ; do {instrucciones}; done.
Esta instrucción de control es mas similar al "for" de python o perl, que su homónimo en C/C++...
Por ejemplo:
#!/bin/bash
for VAR in `cat list.txt`; do
echo "$VAR was found in list.txt"
done
exit 0
en este caso el contenido de la variable interna del shell ($VAR) toma los valores que da la ejecución del comando "cat list.txt", aqui las comas invertidas `...` le indica al shell que debe ejecutar de manera prioritaria los comandos encerrados por estas. "exit 0" devuelve al shell padre el valor que corresponde ejecución normal, es decir que no murió el proceso por errores. Para saber esto basta con hacer "echo $?"
otro ejemplo:
hcaste@azul:~$ for i in `ls`; do echo $i; done
cd-como.txt
cdrdao.txt
Clave
Sync
de
Firefox.html
uno podría pensar que es análogo al comando "ls" de UNIX, pero no, basta comparar con la salida de ls..
cd-como.txt
cdrdao.txt
Clave Sync de Firefox.html
El motivo se debe a que se toma como separadores de campos los espacios en blanco.
Otra sentencia de control es: while [condición]; do {instrucciones}; done
Esta es una sentencia de control por anticipación. Un ejemplo es:
#!/bin/bash
count="0"
max="10"
while [ $count != $max ]; do count=`expr $count + 1`
echo "Ya llegue a : $count"
done
exit 0
en cambio esta sentencia de control es por pos-condición until [condición]; do {instrucciones}; done
y por último la sentencia de control "case" cuyo formato es...
case [condición]
patron-1) lista de comandos separados por ";;"
patron-2) idem..
esac
por ejemplo:
#!/bin/bash
case "$1" in
--ayuda)
echo "Uso: $0 [--ayuda] [--puerto
;;
--puerto)
telnet $3 $2
;;
--fecha)
date
;;
esac
exit 0
la próxima entrega se posteará sobre funciones.