Нет, они все одинаковые. Но пара защитных привычек, чтобы войти.
Вы должны указать $STRING в -z, а также
Если вы работаете с параметром -u (я всегда делаю это), вы должны ссылаться на необязательную переменную как ${STRING-} на случай, если она вообще не установлена
Ответ 2
По-видимому, все они делают одно и то же, то есть проверяют, является ли данная строка ее "пустой", за исключением того, что первая проверяет, является ли строка $string пустой, вторая проверяет, равна ли x плюс $string равным x и, наконец, -z, который проверяет длину.
Лично я бы сказал, что это гораздо более реалистично.