Intereting Posts
установить дату истечения срока действия учетной записи в будущем Как запустить службу systemd только после запуска mysql? количество слов между двумя фиксированными словами как настроить xorg.conf для расширенного рабочего стола? Udev- Как узнать, к какой подсистеме принадлежит устройство? Ожидайте, что скрипт не отправит пароль как запланировано Разбор символа строки с bash Существуют ли какие-либо способы или инструменты для сброса кеша и буфера памяти? Бэкэнд в настоящее время размонтирует Национальные символы в manpages После установки Ubuntu разделы не соответствуют установленным каталогам Можно ли сгруппировать имя пользователя и имя пользователя другого пользователя? Получение размера только для файлов du Поиск простой панели X Window / док-станции с функцией «привязки» значка от Windows 7 В чем разница между интерактивными оболочками, оболочками входа, оболочкой без входа и их вариантами использования?

и всегда эквивалентны?

Мой код выглядит примерно так:

VAR="" while [ -z "$VAR" ]; do VAR=$( command | grep "important_string" ) done 

Поэтому я хочу опросить вывод command , пока не появится важная_строка и не будет помещена в $VAR .

Есть ли функциональная разница между [ -z "$VAR" ] и [ "$VAR" = "" ] ?

Да, они ( [ -z "$VAR" ] и [ "$VAR" = "" ] …) эквивалентны. Оба тестируют на пустоту $VAR (например, когда она не привязана или не установлена ​​пустая строка).

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

Конечно, я предполагаю какую-то оболочку POSIX или что-то подобное.

Возможно, -z может быть немного быстрее (но вы не должны заботиться о микросекундах в сценариях оболочки), и вы можете найти = возможно, более читабельным.