El script Bash no se ejecuta como se esperaba

El script Bash no se ejecuta como se esperaba

Estoy tratando de obtener el siguiente script para tomar el uuid de conexión que le pasó (por el administrador de red), compararlo con una lista de uuids para las conexiones de mi hogar (tanto físicas como VPN) y ejecutar ciertos comandos. Sin embargo, el script parece ir a la cláusula "else" todo el tiempo, aunque el uuid sea correcto.

#!/bin/bash

echo $CONNECTION_UUID

Home_UUIDs="5b509e73-8f08-475c-a14d-7037f2f4b87a ba36c69e-c3f1-4480-a484-1eea105311b2 f3889052-719f-4b88-8b94-e1fa189d44f9"

if [[ "$Home_UUIDs" == *"$CONNECTION_UUID"* ]]; then
        case "$2" in
                up)
                echo "Conecting to Home netork..."
                ntpdate -vs 192.168.0.18
                service ntp start
                ;;
                down)
                echo "Disconnecting from home network"
                service ntp stop
                ;;
        esac
else
        echo "We're not at home..."
        service ntp stop
fi

exit 0

Respuesta1

Parece funcionar para mí para los tres uuids:

#!/bin/bash
Home_UUIDs='5b509e73-8f08-475c-a14d-7037f2f4b87a ba36c69e-c3f1-4480-a484-1eea105311b2 f3889052-719f-4b88-8b94-e1fa189d44f9'

for CONNECTION_UUID in 5b509e73-8f08-475c-a14d-7037f2f4b87a \
                       ba36c69e-c3f1-4480-a484-1eea105311b2 \
                       f3889052-719f-4b88-8b94-e1fa189d44f9 ; do

    if [[ "$Home_UUIDs" == *"$CONNECTION_UUID"* ]]; then
        echo "We're at home!"
    else
        echo "We're not at home..."
    fi
done

¿Hay otros caracteres en $CONNECTION_UUID?

Respuesta2

Finalmente lo solucioné reemplazando la declaración entre paréntesis con

[[ "$Home_UUIDs" =~ "$CONNECTION_UUID" ]]

en lugar de

[[ "$Home_UUIDs" == *"$CONNECTION_UUID"* ]]

información relacionada