Поскольку оболочки не всегда были в хорошем поведении, если одна из переменных была пустой.
Рассмотрим, если $VAR
было пустым / пустым и $VALUE
равно "foo", ваши две конструкции расширяются до:
[ x = xfoo ]
и
[ = foo ]
Последний может вызвать ошибку в некоторых оболочках из-за того, что является недопустимой конструкцией, тогда как первая действует в любом случае.Это не проблема в недавней версии bash (возможно, даже в старых версиях bash), но вот откуда она взялась исторически - и, кроме случайного момента недоумения со стороны людей в вашей ситуации, есть небольшая причина не сделать это для совместимости с более широким диапазоном оболочек.