GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo comparar números y cadenas en Linux Shell Script

En este tutorial sobre secuencias de comandos de shell bash de Linux, vamos a aprender cómo comparar números, cadenas y archivos en secuencias de comandos de shell utilizando la instrucción if. Las comparaciones en un script son muy útiles y después del resultado de la comparación, el script ejecutará los comandos y debemos saber cómo podemos usarlos para nuestro beneficio.

Sintaxis de comparaciones en script de shell

if [ conditions/comparisons]
    then
         commands
fi

Un ejemplo

if [2 -gt 3]
     then
     print "2 is greater"
     else
     print "2 is not greater"
fi

Este fue solo un ejemplo simple de comparación numérica y podemos usar declaraciones o condiciones más complejas en nuestros scripts. Ahora aprendamos las comparaciones numéricas con un poco más de detalle.

Comparar números en Linux Shell Script

Este es uno de los métodos de evaluación más comunes, es decir, comparar dos o más números. Ahora crearemos un script para hacer una comparación numérica, pero antes de hacerlo, necesitamos conocer los parámetros que se usan para comparar valores numéricos. A continuación se menciona la lista de parámetros utilizados para las comparaciones numéricas

  • num1 -eq num2 compruebe si el primer número es igual al segundo número
  • num1 -ge num2 comprueba si el primer número es mayor o igual que el segundo número
  • num1 -gt numero2 comprueba si el primer número es mayor que el segundo
  • num1 -le num2 comprueba si el primer número es menor o igual que el segundo número
  • num1 -lt numero2 comprueba si el primer número es menor que el segundo
  • 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, usémoslos en un script,

#!/bin/bash
# Script to do numeric comparisons
var1=10
var2=20
if [ $var2 -gt $var1 ]
    then
        echo "$var2 is greater than $var1"
fi
# Second comparison
If [ $var1 -gt 30]
    then
        echo "$var is greater than 30"
    else
        echo "$var1 is less than 30"
fi

Este es el proceso para hacer una comparación numérica, ahora pasemos a las comparaciones de cadenas.

Comparar cadenas en Linux Shell Script

Al crear un script bash, es posible que también debamos comparar dos o más cadenas y comparar cadenas puede ser un poco complicado. Para hacer comparaciones de cadenas, los parámetros utilizados son

  • var1 =var2     comprueba si var1 es lo mismo que la cadena var2
  • var1 !=var2    comprueba si var1 no es lo mismo que var2
  • var1
  • 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 :-  Es posible que haya notado que el símbolo mayor que (>) y el símbolo menor que (<) que se usan aquí también se usan para la redirección para stdin o salida estándar en linux Esto puede ser un problema cuando estos símbolos se usan en nuestros scripts, entonces, ¿qué se puede hacer para solucionar este problema?

La solución es simple, al usar cualquiera de estos símbolos en scripts, deben usarse con un carácter de escape, es decir, úselo como "/>" o "/<".

Ahora vamos a crear un script haciendo las comparaciones de cadenas.

En el script, primero verificaremos la igualdad de cadenas, este script verificará si el nombre de usuario y nuestras variables definidas son iguales y proporcionará una salida basada en eso. En segundo lugar, haremos una comparación mayor o menor que. En estos casos, el último alfabeto, es decir, z será el más alto y el alfabeto a será el más bajo en comparación. Y las mayúsculas se considerarán inferiores a una minúscula.

#!/bin/bash
# Script to do string equality comparison
name=linuxtechi
if [ $USER = $name ]
        then
                echo "User exists"
        else
                echo "User not found"
fi
# script to check string comparisons
var1=a
var2=z
var3=Z
if [ $var1 \> $var2 ]
        then
                echo "$var1 is greater"
        else
                echo "$var2 is greater"
fi
# Lower case  & upper case comparisons
if [ $var3 \> $var1 ]
        then
                echo "$var3 is greater"
        else
                echo "$var1 is greater"
fi

Ahora crearemos otro script que usará "-n ” &“-z ” con cadenas para verificar si tienen algún valor

#!/bin/bash
# Script to see if the variable holds value or not
var1=" "
var2=linuxtechi
if [ -n $var1 ]
        then
                echo "string  is not empty"
        else
                echo "string provided is empty"
fi

Aquí solo usamos el parámetro '-n' pero también podemos usar "-z “. La única diferencia es que con '-z', busca una cadena con longitud cero mientras que el parámetro "-n" busca un valor mayor que cero.

Comparación de archivos en Linux Shell Script

Esta podría ser la función más importante de 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 son

  • -d archivo                        comprueba si el archivo existe y si es un directorio
  • -e archivo                        comprueba si el archivo existe en el sistema
  • -w file                       comprueba si el archivo existe en el sistema y si se puede escribir
  • -r archivo                        comprueba si el archivo existe en el sistema y es legible
  • -s file                        comprueba si el archivo existe en el sistema y si 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 file                        comprueba si el archivo existe y si el grupo predeterminado es el mismo que el del usuario actual
  • -x archivo                         comprueba si el archivo existe en el sistema y es ejecutable
  • archivo A -nt archivo B         comprueba si el archivo A es más reciente que el archivo B
  • archivo A -ot archivo B          comprueba si el archivo A es más antiguo que el archivo B

Aquí hay un script que usa la comparación de archivos

#!/bin/bash
# Script to check file comparison
dir=/home/linuxtechi
if [ -d $dir ]
        then
                echo "$dir is a directory"
                cd $dir
                ls -a
        else
                echo "$dir is not exist"
fi

Del mismo modo, también podemos usar otros parámetros en nuestros scripts para comparar archivos. Esto completa nuestro tutorial sobre cómo podemos usar comparaciones numéricas, de cadenas y de archivos en scripts bash. Recuerde, la mejor manera de aprender es practicarlos usted mismo.

Lea también :Cómo crear enlaces rígidos y blandos (enlace simbólico) en sistemas Linux


Linux
  1. Cómo Navidadizar su Terminal Linux y Shell

  2. Cómo definir y usar funciones en Linux Shell Script

  3. Cómo comparar cadenas en Bash Shell Scripting

  4. Cómo cambiar Shell en Linux

  5. Cómo verificar si existe un grupo y agregarlo si no existe en Linux Shell Script

Cómo instalar y usar ZSH Shell en Linux

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo instalar y usar Nu Shell en Linux

Cómo crear y ejecutar un script de shell en Ubuntu 22.04

Cómo instalar Fish Shell en Ubuntu y Linux Mint

Shell/Bash Script para encontrar números primos en Linux