Использование unset против установки переменной на пустое

В настоящее время я пишу среду тестирования bash, где в функции тестирования используются оба стандартных теста bash ([[), а также могут использоваться предопределенные совпадения. Сопоставители являются обёртками для & [; и, кроме возврата кода возврата, установите несколько значимых сообщений о том, что ожидалось.

Пример:

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

            return 1
    fi
}

Таким образом, когда используется сопоставитель, и он терпит неудачу, только тогда устанавливается error_message.

Сейчас, в какой-то момент позже, я проверяю, прошли ли тесты успешно. Если это удалось, я печатаю ожидание зеленым цветом, если это не удалось красным.

Кроме того, может быть установлен набор error_message, поэтому я проверяю, существует ли сообщение, распечатываю его и затем сбрасываю (поскольку следующий тест может не установитьerror_message):

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

    unset -v error_message
fi

Теперь у меня вопрос: лучше ли сбросить переменную или просто установить ее на «apos»?

error_message=''

Какой из них лучше? Это на самом деле имеет значение? Или, может быть, я должен иметь дополнительный флаг, указывающий, что сообщение было установлено?

Ответы на вопрос(4)

Ваш ответ на вопрос