Pongamos unas comillas al “infinito”, todo concluye al fin, nada puede escapar a un Ctrl+C o a un break (produce un abandono inmediato) dentro del bucle.-
Shell
1
2
3
4
5
while:;do
# Todo lo que quieras repetir infinitas veces
echo"Hola Mundo"
sleep2
done
Otras opciones son utilizar las palabras especiales true (indica que una condición en verdadera) y false (indica que una condición es falsa) de bash:
La combinación de arrays e indirección de variables demuestra toda la potencia del método. Es especialmente útil para crear archivos de configuración coherentes, fáciles de modificar, potentes y flexibles, pero sobre todo, que no necesitan ser parseados, el mismo Bash se encarga de eso en forma trasparente, por lo tanto la probabilidad de bugs disminuye notoriamente. El siguiente ejemplo demuestra la configuración de un pequeño programa utilizando arrays e indirección de variables:
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
# Archivo de configuración: pruebaservidores.conf
servidores=(srvmysql srvapache)
srvmysql_config=(
nombre=SrvMySQL
ip=172.16.2.1
)
srvapache_config=(
nombre=SrvApache
ip=172.16.2.4
)
A continuación el programa principal :
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
# Programa principal: pruebaservidores.sh
source pruebaservidores.conf
functionprobarServidor(){
# Esta es la función que hace la "magia"
# usando indirección de variables
# Crea una variable local con el nombre del array
# que contiene la configuración del servidor
local servidor="$1[*]"
# Itera cada elemento de la configuración
# creando variables locales, usando indirección
forconfigin${!servidor}
do
# Crea instancias locales a partir de los elemntos
# del array que configura cada servodr
local$config
done
# Ahora cada elemento del array es una variable usable localmente
Como se puede apreciar, el programa tiene un archivo de configuración que casi no requiere ningun esfuerzo de programación adicional para leer la configuración del usaurio, y éste a su vez encuentra una estructura de configuración sumamente intuitiva y fácil de adaptar a sus necesidades particulares, pudiendo incluso incorporar lógica de proceso en caso de ser un usuario técnico y tener un buen motivo para hacerlo.
Una característica de Bash es la posiblidad de utilizar una variable para conformar parte del nombre de otra variable, y luego acceder tanto al nombre como al valor de la variable mediante el uso del mecanismo de indirección, por ejemplo así:
Shell
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
variable_uno="Yo soy 1"
variable_dos="Yo soy 2"
fororden inuno dos
do
variable="variable_$orden"
echo$variable=${!variable}
done
# Salida:
# variable_uno = Yo soy 1
# variable_dos = Yo soy 2
¿Te ha servido este sitio alguna vez? Cada script, cada línea de ayuda aquí es fruto de horas de trabajo y pasión por compartir. Si alguna vez resolviste un problema gracias a esta página, considera hacer una donación. Tu aporte —por pequeño que sea— mantiene vivo este proyecto y me impulsa a seguir creando.