Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Rompiendo un bucle

bash proporciona dos comandos integrados que se pueden usar para controlar el flujo del programa dentro de los bucles. El comando break termina inmediatamente un bucle y el control del programa se reanuda con la siguiente instrucción que sigue al bucle. El comando continue hace que se omita el resto del ciclo y el control del programa se reanuda con la siguiente iteración del ciclo. Aquí vemos una versión del programa de menú while que incorpora tanto romper como continuar:


#! / Bin / bash


# while-menu2: un programa de información del sistema impulsado por menús DELAY = 3 # Número de segundos para mostrar los resultados

mientras sea cierto; hacer

limpiar

gato << - _EOF_

Por favor seleccione:


1. Mostrar información del sistema

2. Mostrar espacio en disco

3. Muestra la utilización del espacio en el hogar

0. Salir


_EOF_

read -p "Ingresar selección [0-3]>"


si [[$ RESPUESTA = ~ ^ [0-3] $]]; entonces si [[$ REPLY == 1]]; luego

echo "Nombre de host: $ HOSTNAME" tiempo de actividad

dormir $ DELAY

continue

fi

si [[$ RESPUESTA == 2]]; luego df -h

dormir $ DELAY

continue

fi

si [[$ RESPUESTA == 3]]; luego

si [[$ (id -u) -eq 0]]; luego

echo "Utilización del espacio doméstico (todos los usuarios)" du -sh / home / *

más

#! / Bin / bash


# while-menu2: un programa de información del sistema impulsado por menús DELAY = 3 # Número de segundos para mostrar los resultados

mientras sea cierto; hacer

limpiar

gato << - _EOF_

Por favor seleccione:


1. Mostrar información del sistema

2. Mostrar espacio en disco

3. Muestra la utilización del espacio en el hogar

0. Salir


_EOF_

read -p "Ingresar selección [0-3]>"


si [[$ RESPUESTA = ~ ^ [0-3] $]]; entonces si [[$ REPLY == 1]]; luego

echo "Nombre de host: $ HOSTNAME" tiempo de actividad

dormir $ DELAY

continue

fi

si [[$ RESPUESTA == 2]]; luego df -h

dormir $ DELAY

continue

fi

si [[$ RESPUESTA == 3]]; luego

si [[$ (id -u) -eq 0]]; luego

echo "Utilización del espacio doméstico (todos los usuarios)" du -sh / home / *

más


echo "Utilización del espacio doméstico ($ USER)" du -sh $ HOME

fi

dormir $ DELAY

continue

fi

si [[$ RESPUESTA == 0]]; luego romper

fi

más

echo "Entrada no válida". dormir $ DELAY

fi hecho

echo "Programa terminado".

echo "Utilización del espacio doméstico ($ USER)" du -sh $ HOME

fi

dormir $ DELAY

continue

fi

si [[$ RESPUESTA == 0]]; luego romper

fi

más

echo "Entrada no válida". dormir $ DELAY

fi hecho

echo "Programa terminado".


En esta versión del script, configuramos un ciclo infinito (uno que nunca termina por sí solo) mediante el uso de verdadero comando para proporcionar un estado de salida a mientras. Desde verdadero siempre saldrá con un estado de salida de cero, el bucle nunca terminará. Esta es una técnica de creación de scripts sorprendentemente común. Dado que el ciclo nunca terminará por sí solo, depende del programador proporcionar alguna forma de salir del ciclo cuando sea el momento adecuado. En este guión, el romper El comando se usa para salir del bucle cuando se elige la selección "0". los Seguir El comando se ha incluido al final de las otras opciones de secuencia de comandos para permitir una ejecución más eficiente. Mediante el uso continue, el script omitirá el código que no es necesario cuando se identifica una selección. Por ejemplo, si se elige e identifica la selección "1", no hay razón para probar las otras selecciones.


 

Top OS Cloud Computing en OnWorks: