Да, они ( [ -z "$VAR" ]и [ "$VAR" = "" ]...) эквивалентны. Оба проверяют пустоту $VAR(например, когда она не связана или установлена в пустую строку).
Как прокомментировал Celada , плохие вещи могут произойти при использовании [ "$VAR" = "" ] if, если VARкакой-то действительный тест (например, если VARесть -z), в частности, когда [(или test) не является встроенной оболочкой. Но bashили является встроенной и что , кажется, не является проблемой. Вы могли бы использовать для своего теста. Смотрите тест (1)zsh[[ "x$VAR" = "x" ]
Конечно, я предполагаю некоторую оболочку POSIX или что-то подобное.
Возможно, это -zможет быть немного быстрее (но вам не нужно заботиться о микросекундах в сценариях оболочки), и вы, возможно, найдете =более читабельным.
==неверный синтаксис, но работает во многих оболочках (вероятно, потому что это мышечная память для всех, кто использует другие языки). Вы должны использовать=.