Hola, en este tutorial vamos a ver una aplicación de uso de un ciclo Do While infinito, este script crea un entorno virtual para un proyecto de Python y notifica al usuario como activarlo.
#This script creeates and activates a venv in Python3 activateVenv () {
echo"Type 'source ./$1/bin/activate' to activate venv"
}
echo"Welcome to Cactvs!:"echo"Enter the name of your virtual enviroment:"read venv
python3 -m venv $venvwhile :
doecho"Your venv is already built"echo"Would you like to know how to activate your venv [y/n]: "read answer
if [ $answer == 'y' ] || [ $answer == 'Y' ]
then
activateVenv $venvecho""echo"Type 'deactivate' to deactivate the venv "breakelif [ $answer == 'n' ] || [ $answer == 'N' ]
thenbreakelseecho"Invalid option! Try again."fidoneecho"Everything is in the right place!"
sleep 5
exit 0
Tenemos una función activateVenv()
qu requiere un argumento y que imprime un mensaje que expreal usuario la manera de cómo activar su entorno virtual. El script solicita al usuario el nombre del ambiente virtual, esa cadena se guarda en la variable venv
, despues de reccibir un nombre para el nuevo ambiente virtual, ejecuta el comando para la creación del entorno.
Después de que el ambiente fue creado, entramos en un ciclo While infinito de tipo 1-x (primero se ejecuta el bloque, luego se evaluan las condiciones, el bloque se ejecuta al menos una vez), es en este punto que el script nos pregunta si deseamos saber la manera de activar el ambiente y solo tenemos dos opciones válidas [y/n].
Si elegimos una opción invalida, el script no podrá salir del ciclo hasta que elijamos una opción valida, si elegimos ‘y’, entonces invoca la función, expresa la manera en como desactivar el ambiente y se rompe el ciclo con break , si elegimos ‘n’, el cilo se rompe directamente, nótese que no hace distinción de mayúsculas y minúsculas.
Cuando el ciclo se rompe, el script indica que todo terminó, hace una pausa de 5 segundos y se cierra la aplicación.
Intenté activar el ambiente desde el mismo script, pero estuve investigando y resulta que no es posible automatizar la activación via scripting, aquí te dejo la fuente:
Este script muestra de manera sencilla la implementación de un sencillo menú de 3 opciones con clausulas if y un ciclo do While infinito de tipo 1-x. Desde luego, podemos hacer un ménu con multiples opciones con el uso de más cláusulas if o con el comando case. Te dejo un ejemplo de esta implementación para que la puedas usar en tus proyectos de scripting:
https://bash.cyberciti.biz/guide/Infinite_while_loop
Si llegaste hasta aquí, te felicito por tu paciencia. Por favor, deja un comentario, eso me ayuda mucho para mejorar mis tutoriales.
Hay algún curso que trate de hacer scripts?
Hasta ahora he tomado el de Introducción a la Terminal y Línea de Comandos y dos cursos de Python, pero no los he combinado con los famosos scripts.
Interesante el concepto del bucle tipo 1-x.
Gracias por el aporte.
Muchas gracias.
Muy bueno!
Muchas gracias. 😃