Archive

Comparación de strings en Bash

Hoy se me ocurrió que estaría chido mostrar como se hace una comparación de strings en Bash pero de forma práctica; dado que, en Bash, tendemos a ser muy estructurados y, a veces, poco eficientes.

Supongamos que quieres ver si una variable es alguna de 5 opociones. Quieres comparar el valor de la variable con todas y, si no es una de esas, pues quejarte:

#!/usr/bin/env bash
set extglob

fruta='manzana'

if [[ $fruta == @(membrillo|ciruela|mango|durazno|níspero) ]]; then
    echo "Ah, pues, en mi pueblo, hay árboles de $fruta!"
else
    echo "No, la neta, aquí no se produce la fruta $fruta..."
fi

Nota

Es muy importante que extglob esté activo para que funcione este tipo de expansión.

Está muy chido eso porque te ahorra un montón de elseif of case.

Para más información, chécate esta parte del manual de Bash: https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html#Pattern-Matching