Показать статистику
0 голосов
от (440 баллов)

Как лучше всего определить пустую переменную в bash? Т.е. убедиться что переменная не имеет ничего и равна (""). Я слышал что можно проверять так:

if [ "x$variable" = "x" ]

Это оптимальный вариант? Или есть что то попроще?

3.3тыс. просмотров 2 ответов

2 Ответы

0 голосов
от (770 баллов)

Можно как вы написали. А можно и так:

if [ -z "$VAR" ];

Эта конструкция вернет true, если переменная не задана или является пустой строкой ("").

от (440 баллов)
0
Спасибо! А что если переменная задана как "" ?
от (770 баллов)
0
Тоже сработает. -z проверяет именно на пустую строку. Кавычки с пустотой - тоже пустая строка.
0 голосов
от (4.5тыс. баллов)

Можно использовать любую из таких конструкций:

if [[ -z $variable ]]
if [[ -z "$variable" ]]
if [[ ! $variable ]]
if [[ ! "$variable" ]]

Но учтите, это корректно работает в bash и может не работать на sh или в других интерпретаторах.

В bash при использовании двойных квадратных скобок, кавычки не обязательны:

if [[ $variable ]]

Такой синтаксис совместим с ksh, но с чисто POSIX системами (чем то старым например), это не сработает.

от (17.4тыс. баллов)
0

Если нужно определить что переменная именно пустая (а не просто не задана):

if [[ -z $variable && ${variable+x} ]]
...