El bucle For es uno de los más herramientas valiosas en cualquier lenguaje de programación y Microsoft PowerShell no es diferente. Puedes utilizar otros bucles para repetir comandos, pero el bucle For es quizás el más sencillo.
Desde iterar sobre matrices hasta ejecutar una función un número predeterminado de veces, hay muchas cosas que puedes lograr con esta herramienta. Aquí hay un tutorial sobre cómo usar bucles For en PowerShell.
¿Para qué sirven los bucles For en PowerShell?
A diferencia de Símbolo del sistema, PowerShell es un entorno de secuencias de comandos completo. Esto significa que puede escribir secuencias de comandos de PowerShell reutilizables para realizar tareas automáticamente en lugar de ingresar comandos manualmente. Y los bucles For son la clave para escribir estos módulos.
Una instrucción For repite un bloque de script un número específico de veces, modificando una variable determinada para realizar un seguimiento de la progresión. Esto le permite utilizar el bucle en algunos escenarios bastante interesantes.
Puedes generar secuencias de números, determinar un número primo o mostrar un temporizador de cuenta regresiva. De manera más práctica, puedes iterar sobre una serie de objetos, realizando alguna acción con cada entrada.
La sintaxis de un bucle For en PowerShell
Los bucles For funcionan en Windows PowerShell de la misma manera que en cualquier lenguaje de programación. Las expresiones que inicializan la variable de seguimiento, prueban su valor y modifican la variable se encuentran entre corchetes después de "Para", separados por punto y coma. Luego viene la lista de declaraciones unida por llaves.
Para (Inicialización; Condición; Actualización)
{
Bloque de secuencias de comandos
}
Cómo utilizar el bucle For en un script de PowerShell
Usar el bucle For es bastante sencillo. Siempre que te encuentres con una situación que requiera repetir un paso ligeramente variable, debes ponerlo en un bucle For.
Digamos que necesitas escribir un fragmento de código que pueda encontrar la suma de todos los números naturales hasta un número n, contenido en la variable $n. A continuación se muestra un ejemplo básico de bucle For:
$n = 10
$suma = 0
Para ($i = 1 ; $i -le $n ; $i++)
{
$suma = $suma + $i
}
“La suma de $n números naturales es $suma”
Acceder a matrices a través de un bucle For
.Generar secuencias numéricas no es para lo que la mayoría de la gente usa PowerShell. Un uso más común es iterar sobre una matriz.
Supongamos que tiene una matriz $week con siete elementos. Puede generar la lista de los días contenidos en la matriz usando un bucle For simple, como se demuestra en el siguiente ejemplo.
Para ($i = 0; $i -lt $semana.Longitud; $i++)
{
$semana[$i]
}
Uso del bucle ForEach para iterar rápidamente a través de una matriz
Otra forma del bucle For es la instrucción ForEach. Esta versión simplifica revisar el contenido de una matriz de PowerShell y procesarlo individualmente. El fragmento de código anterior, por ejemplo, se puede reescribir así:
Foreach ($día en $semana)
{
$día
}
Cuando trabaje con objetos más complejos, también puede utilizar el cmdlet Foreach-Object para realizar una acción sobre el contenido de cualquier comando de PowerShell.
¿En qué se diferencia el bucle For de otros tipos de bucles?
El bucle For no es el único tipo de instrucción de bucle disponible para usted. Como la mayoría de los lenguajes de programación, PowerShell tiene varios tipos de bucles.
Mientras
El más simple de ellos es el bucle While. Todo lo que tiene es una condición y un bloque de secuencia de comandos, y el bucle se ejecuta siempre que la expresión de prueba se evalúe como verdadera. Dado que la expresión se evalúa primero, existe la posibilidad de que el código no se ejecute en absoluto o termine como un bucle infinito.
Mientras (Condición)
{
Bloque de secuencias de comandos
}
Hacer mientras
Si está escribiendo un script que debe ejecutarse al menos una vez (incluso si la expresión se evalúa como falsa), puede utilizar el bucle Do-While. La única diferencia con el bucle While es que coloca el bloque de comando antes de la condición, lo que significa que el código se ejecuta antes de que se verifique la expresión de prueba por primera vez.
Haz {
Bloque de script
}
Mientras (Condición)
Hacer hasta
Otra versión de este bucle es Do-Until. Básicamente, ejecuta el bloque de código y luego lo repite hasta que la expresión de prueba sea verdadera: lo contrario de un bucle Do-While. No es una estructura particularmente útil, ya que puedes lograr lo mismo modificando la condición en un bucle Do-While estándar..
Haz {
Bloque de secuencias de comandos
}
Hasta (Condición)
Por qué el bucle For es mejor
El problema con todas estas otras estructuras de bucle es que no incluyen el valor inicial ni las declaraciones de actualización. Debes recordar manualmente crear una variable fuera del bucle y luego incrementarla (o disminuirla) durante cada paso del bucle.
Como es de esperar, los programadores a menudo olvidan este paso, lo que genera un script que no funciona según lo previsto. Esto hace perder un tiempo precioso en la depuración.
El bucle For evita este problema al necesitar expresiones de inicialización e incremento dentro de los corchetes iniciales. Esto conduce a secuencias de comandos más limpias y sólidas.
¿Cuándo debería utilizar el bucle For en PowerShell?
PowerShell se trata de crear scripts para la automatización. Y probablemente la herramienta más útil para lograrlo es el bucle For. Puedes usarlo para reemplazar muchas operaciones de copiar y pegar con un script más compacto y elegante.
La función más común de este bucle es iterar sobre una matriz, una entrada a la vez. Para un script aún más optimizado, también puedes usar un bucle ForEach. También puedes utilizar el bucle For para generar secuencias numéricas, aunque rara vez es necesario.
El bucle For supera a otros algoritmos de bucle al incluir todas las funciones esenciales de un bucle en los parámetros, evitando cualquier error debido al olvido de esas declaraciones. Esto hace que el bucle For sea indispensable en cualquier escenario que requiera repetir un conjunto de comandos.
.