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