O script Bash não está funcionando conforme o esperado

O script Bash não está funcionando conforme o esperado

Estou tentando fazer com que o script abaixo pegue o uuid de conexão passado para ele (pelo networkmanager), compare-o com uma lista de uuids para minhas conexões domésticas (físicas e VPN) e execute determinados comandos. No entanto, o script parece ir para a cláusula “else” o tempo todo, mesmo que o uuid esteja correto.

#!/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

Responder1

Parece funcionar para mim para todos os três 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

Existem outros caracteres em $CONNECTION_UUID?

Responder2

Finalmente corrigi o problema substituindo a declaração entre colchetes por

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

em vez de

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

informação relacionada