En este artículo vamos a echar un vistazo a unos pocos conceptos sobre Bash Shell Script. En el siguiente post vamos a aprender a hacer comparaciones entre diferentes tipos de caracteres. Vamos a movernos comparando números, cadenas de texto y comparaciones de archivos utilizando un simple Bash Shell Script.
Cuando te pones a escribir código en bash, las comparaciones en un script son algo muy útil y una de las declaraciones más usadas. Por este motivo creo que es necesario y debemos saber cómo podemos usarlas para hacernos la vida más fácil a la hora de codificar nuestro código y no quedarnos bloqueados.
Sintaxis básica de comparaciones con Bash Shell Script
Sintaxis más básica para realizar comparaciones es la siguiente:
if [condiciones / comparaciones] then comandos fi
Un ejemplo
#!/bin/bash if [2 -gt 3] then echo "2 es el mayor" else echo "2 no es el mayor" fi;
Esto fue sólo un ejemplo simple de comparación numérica. Vamos a poder utilizar declaraciones o condiciones más complejas en nuestros scripts. Ahora vamos a echar un vistazo a las comparaciones numéricas un poco más detalle.
Comparaciones numéricas
Este es uno de los métodos de evaluación más comunes, es decir, comparar dos o más números. En este ejemplo vamos a crear un script para realizar la comparación numérica. Antes de hacerlo necesitamos conocer los parámetros que se utilizan para comparar valores numéricos. A continuación veremos la lista de parámetros utilizados para las comparaciones numéricas.
num1 -eq num2 comprueba si el 1er número es igual al segundo número num1 -ge núm2 comprueba si el primer número es mayor o igual al segundo número num1 -gt num2 comprueba si el primer número es mayor que el segundo número num1 -le num2 comprueba si el primer número es menor o igual al segundo número num1 -lt num2 comprueba si el primer número es menor que el segundo número num1 -ne num2 comprueba si el primer número no es igual al segundo número
Ahora que conocemos todos los parámetros que se utilizan para las comparaciones numéricas, vamos a utilizar estos conocimientos en un script de ejemplo:
#!/bin/bash #Script para hacer comparaciones numéricas var1 = 10 var2 = 20 if [$var2 -gt $var1] then echo "$var2 es mayor que $var1" fi; #Segunda comparación if [$var1 -gt 30] then echo "$var es mayor que 30" else echo "$var1 es menor de 30" fi;
Este es el proceso para hacer comparaciones numéricas, ahora que cada cual lo complique tanto como quiera. El siguiente punto que vamos a ver es la comparación de cadenas.
Comparaciones de cadenas
Al crear un script de bash, también podríamos estar obligados a comparar dos o más cadenas. En algunos casos comparar cadenas puede ser un poco complicado. Para hacer comparaciones de cadenas, los parámetros utilizados son los siguientes:
var1 = var2 comprueba si var1 es igual que var2 de cadena var1! = var2 comprueba si var1 no es igual que var2 var1 <var2 comprueba si var1 es menor que var2 var1> var2 comprueba si var1 es mayor que var2 -n var1 comprueba si var1 tiene una longitud mayor que cero -z var1 comprueba si var1 tiene una longitud de cero
Nota: – Cualquiera puede haber notado que mayor que, con símbolo (>) y menor que, con símbolo (<) utilizado aquí también se utilizan para la redirección para stdin o stdout en Linux. Esto puede ser un problema cuando estos símbolos se utilizan en nuestros scripts, así que habrá que hacer algo para resolver este problema. La solución es simple, cuando se utiliza cualquiera de estos símbolos en los scripts, deben utilizarse con caracteres de escape, es decir, utilizarlos como «/>» o «/ <«.
Explicado lo anterior, ahora vamos a crear un script haciendo las comparaciones de cadenas.
En la secuencia de comandos, en primer lugar estaremos comprobando la igualdad de cadena. Este script verificará si el nombre de usuario y nuestras variables definidas son los mismos y proporcionará una salida basada en eso.
#!/bin/bash #Script para hacer comparación de igualdad de cadena name = sapoclay if [$USER = $name] then echo "El usuario existe" else echo "Usuario no encontrado" fi;
Ahora vamos a crear otro script que usará «-n» y «-z» con cadenas para comprobar si tienen algún valor
#!/bin/bash #Script para ver si la variable tiene valor o no var1 = "" var2 = sapoclay if [-n $var1] then echo "tiene una longitud mayor que cero" else echo "tiene una longitud de cero" fi;
Aquí solo usamos el parámetro ‘-n’ pero también podemos usar «-z». La única diferencia es que con ‘-z’, busca la cadena con longitud cero mientras que el parámetro «-n» busca un valor mayor que cero.
Comparación de archivos
Esta podría ser la función más importante de la comparación y es probablemente la más utilizada que cualquier otra comparación. Los parámetros que se utilizan para la comparación de archivos
-d file comprueba si el archivo existe y es un directorio -e file comprueba si el archivo existe en el sistema -w archivo comprueba si el archivo existe en el sistema y si es escribible -r file comprueba si el archivo existe en el sistema y se lee -s verifica si el archivo existe en el sistema y no está vacío -f archivo comprueba si el archivo existe en el sistema y es un archivo -O archivo comprueba si el archivo existe en el sistema y si es propiedad del usuario actual -G archivo comprueba si el archivo existe y el grupo predeterminado es el mismo que el usuario actual -x archivo comprueba si el archivo existe en el sistema y es ejecutable file A -nt file B comprueba si el archivo A es más nuevo que el archivo B file A -ot file B comprueba si el archivo A es más antiguo que el archivo B
Ahora vamos a ver un script para la comparación de archivos:
#!/bin/bash #Script para comprobar la comparación de archivos dir = /home/sapoclay if [-d $dir] then echo "$dir es un directorio" cd $dir ls else echo "$dir no existe" fi;
Con estos pocos ejemplos, ya están vistos los conceptos más básicos para la comparación con Bash Shell Script. En el siguiente enlace se podrá consultar un tutorial básico sobre bash shell script para principiantes. Si ya eres usuario avanzado en este lenguaje, no pierdas tu tiempo.