Проверка нулевой строки в bash

Есть ли разница между следующими тестами?

[[ "$STRING" = "" ]] && exit 1;


[[ "x$STRING" = "x" ]] && exit 1;


[[ -z $STRING ]] && exit 1;

Ответ 1

Нет, они все одинаковые. Но пара защитных привычек, чтобы войти.

  • Вы должны указать $STRING в -z, а также
  • Если вы работаете с параметром -u (я всегда делаю это), вы должны ссылаться на необязательную переменную как ${STRING-} на случай, если она вообще не установлена ​​

Ответ 2

По-видимому, все они делают одно и то же, то есть проверяют, является ли данная строка ее "пустой", за исключением того, что первая проверяет, является ли строка $string пустой, вторая проверяет, равна ли x плюс $string равным x и, наконец, -z, который проверяет длину. Лично я бы сказал, что это гораздо более реалистично.