Używanie unsetu a ustawienie zmiennej na pustą

Obecnie piszę framework do testowania basha, gdzie w funkcji testowej, oba standardowe testy basha ([[), jak również predefiniowane dopasowania mogą być użyte. Matcherzy są opakowani do „[[” i oprócz zwrotu kodu powrotu, ustawcie znaczący komunikat mówiący o tym, czego się spodziewano.

Przykład:

string_equals() {
    if [[ ! $1 = $2 ]]; then
            error_message="Expected '$1' to be '$2'."

            return 1
    fi
}

Tak więc, gdy używany jest licznik, który kończy się niepowodzeniem, ustawiany jest tylko komunikat o błędzie.

Teraz, w pewnym momencie, sprawdzam, czy testy się powiodły. Jeśli się powiedzie, wydrukuję oczekiwanie na zielono, jeśli nie powiedzie się na czerwono.

Ponadto może istnieć zestaw komunikatów o błędach, więc testuję, czy wiadomość istnieje, wypisuję ją, a następnie odznaczam (ponieważ poniższy test może nie ustawićerror_message):

if [[ $error_message ]]; then
    printf '%s\n' "$error_message"

    unset -v error_message
fi

Teraz moje pytanie brzmi, czy lepiej jest odznaczyć zmienną, czy po prostu ustawić ją na „”

error_message=''

Który jest lepszy? Czy to rzeczywiście robi różnicę? A może powinienem mieć dodatkową flagę wskazującą, że wiadomość została ustawiona?

questionAnswers(4)

yourAnswerToTheQuestion