1

Expresiones regulares con bash scripting

Quise aun no llegues a la materia de Bash Scripting o talvez ya la hayas tomando, lo importante que quiero compartir contigo es que Bash Scripting es como un tipo de lenguaje de programación que tiene sus reglas gramaticales (un poco rígidas, por cierto) y tiene todo tipo de sentencias, loops y funciones, ya que bash scripting soporta POO. El punto es que el bash scripting es usado para automatizar tareas desde la terminal (mi favorita la de Ubuntu).
.
El hecho es que si quieres utilizar regExp con bash scripting, tiene su chiste y hay cosas que hay que tener en cuenta que no son exactamente triviales. Al ser un lenguaje de programación que funciona en la terminal, tiene algunas cosillas que hay que tener en cuenta y que te pueden ahorrar mucho estrés si alguna vez llegas a programar con esta potente herramienta.

¿Como expresar las regExo en bash?

La forma de hacerlo es de la siguiente manera:

#!/bin/bash

emailRegex='^\[email protected][a-z]{5,7}\.[a-z]{2,3}\.?[a-z]{2,3}?$'read -p "Type your name: " name
read -p "Type your email: " email

if [[ $email =~ $emailRegex ]]; thenecho"Valid email, welcome"elseecho"Invalid email"fi

Si no le entendiste, te lo explico:

  • #!/bin/bash es lo que se utiliza en bash para que un programa se ejecute correctamente, esto se hace para que no se tenga que poner el bash antes de ejecutar cualquier programa con terminación .sh
  • La segunda linea es la expresión regular que lo que esta buscando es un email valido. Esto ustedes ya deben saberlo después de haber visto el curso
  • Las dos sentencias que empiezan con read -p son un comando en bash que nos permite leer una variable pero antes poner un prompt
  • Lo siguiente tengo que verlo de manera mas detallada, es el if statement pero tiene su chiste.

if statement en bash con regExp

El if statement en nuestro ejemplo tiene la siguiente sintaxis:

if[[ condition ]]; then
	statement
else
	statement
fi

Aquí hay que tener cuidado porque el if tiene que tener un espacio con el [[, ya que si lo ponemos junto nos saldrá un error. De igual forma, dentro de la condición debe haber espacios con los dobles corchetes que hay en la sintaxis del if statement.
.
Además de esto, la condición dentro de los dobles corchetes esta escrita de la siguiente manera:

$email =~ $emailRegex

Esto lo que quiere decir es que la variable mail tiene que corresponder con la expresión regular emailRegex. Por esto, el orden de los signos también es importante (=~), ya que si estos estuvieran invertidos saldría un error.
Además de esto y ya para terminar, es importante tener en cuenta que la variable normal va al principio y la de la expresión regular va después, ya que si no, puede que el programa este dando falsos positivos.

Escribe tu comentario
+ 2