Capítulo 4: Operaciones básicas con variables

Publicado por P. Ruiz en

Operar con variables lógicas

Las variables de tipo lógico, [bool], únicamente pueden recibir dos tipos de valores: verdadero ($true) o falso ($false). Este valor podemos asignarlo de forma directa o como resultado de una expresión.

Para asignar el valor de forma directa, basta con escribir algo como esto:

Scripts-en-PowerShell-Guia-para-principiantes-123

Sin embargo, para crear una expresión lógica, necesitaremos una serie de operadores que no hemos visto hasta ahora: los operadores lógicos. Con ellos podemos averiguar, por ejemplo, si dos variables tienen el mismo valor:

Scripts-en-PowerShell-Guia-para-principiantes-125

En este caso, la variable $igual recibirá el valor $true si el contenido de la variable $a es igual que el contenido de la variable $b. En caso contrario, recibirá el valor $false.

Scripts-en-PowerShell-Guia-para-principiantes-126

Scripts-en-PowerShell-Guia-para-principiantes-124

Además de los operadores básicos de la tabla anterior, disponemos de algunas opciones más avanzadas para trabajar con texto y colecciones de valores. Por ejemplo, podemos utilizar caracteres comodín para saber si un determinado texto se encuentra dentro de otro:

Scripts-en-PowerShell-Guia-para-principiantes-127

Como puedes suponer, la variable $encontrado recibe el valor $true sólo si el contenido de la variable nombre comienza por las letras Fer.

Scripts-en-PowerShell-Guia-para-principiantes-128

Los operadores de este tipo son:

Scripts-en-PowerShell-Guia-para-principiantes-129

Operadores lógicos

Los operadores lógicos nos permiten unir varias expresiones condicionales en una sola. Por ejemplo, si disponemos de tres variables numéricas y necesitamos saber si una de ellas contiene el valor mayor, podríamos escribir algo así:

Scripts-en-PowerShell-Guia-para-principiantes-130

En este caso, la variable $mayor recibirá el valor $true sólo cuando el valor de $a sea superior al de $b y $c. Veamos un ejemplo:

Scripts-en-PowerShell-Guia-para-principiantes-131

En PowerShell tenemos los siguientes operadores lógicos:

Scripts-en-PowerShell-Guia-para-principiantes-132

Observa que los primeros tres operadores son binarios. Es decir, obtienen su resultado a partir de dos expresiones de comparación distintos.

Por el contrario, el último operador es unario, porque actúa sobre una sola expresión de comparación, en concreto para invertir su resultado. Además, es el único que puede escribirse de dos formas diferentes: siguiendo la misma estructura que el resto de operadores (-not) o sustituyendo el operador por un signo de admiración (!).

Esta última sintaxis tiene su origen en el lenguaje C y actualmente se utiliza en muchos lenguajes de programación.

Comprobemos los resultados de los ejemplos anteriores:

Scripts-en-PowerShell-Guia-para-principiantes-133

Operadores de tipo

Permiten comprobar si una variable (o cualquier otro valor) se corresponde con un tipo de dato en particular. Veamos un ejemplo:

Scripts-en-PowerShell-Guia-para-principiantes-134

En este caso, la variable $esFecha recibe el valor $false, porque el dato, aunque parece una fecha, en realidad ya sabemos que es un texto (su tipo de dato es string).

Scripts-en-PowerShell-Guia-para-principiantes-135

Scripts-en-PowerShell-Guia-para-principiantes-136

En PowerShell también disponemos del operador -as, que trata de convertir el dato que se encuentre a su izquierda, al tipo que indiquemos a la derecha. Cuando la conversión no sea posible, se producirá un error de ejecución.

Por ejemplo:

Scripts-en-PowerShell-Guia-para-principiantes-137

El resultado sería este:

Scripts-en-PowerShell-Guia-para-principiantes-138

Igual que nos ocurría al especificar el tipo de un dato, puede ocurrirnos que la conversión no sea exacta. Como entonces, PowerShell tratará de buscar la solución más adecuada. Por ejemplo, cuando escribimos lo siguiente:

Scripts-en-PowerShell-Guia-para-principiantes-139

Obtendremos el siguiente resultado:

Scripts-en-PowerShell-Guia-para-principiantes-140

Sin embargo, cuando esto no sea posible, sencillamente no hará nada. Por ejemplo, si escribimos lo siguiente:

Scripts-en-PowerShell-Guia-para-principiantes-141

Lo que obtenemos es esto:

Scripts-en-PowerShell-Guia-para-principiantes-142