![Какова цель тестирования $DISPLAY с помощью [ -z $DISPLAY ]?](https://rvso.com/image/112355/%D0%9A%D0%B0%D0%BA%D0%BE%D0%B2%D0%B0%20%D1%86%D0%B5%D0%BB%D1%8C%20%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%24DISPLAY%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%5B%20-z%20%24DISPLAY%20%5D%3F.png)
В самом начале сценария стоит:
if [ -z $DISPLAY ]
then
DIALOG=dialog
else
DIALOG=Xdialog
fi
Я это понимаю
$DISPLAY
хранит значение, к которому присоединен псевдотерминал[ -z $DISPLAY ]
проверяет, имеет ли $DISPLAY значение или является пустой строкой
Какова цель $DISPLAY
сохранения значения, чем отличается пустая строка? Почему для дальнейшего выполнения скрипта важно знать, [ -z $DISPLAY ]
является ли значение true или false?
решение1
Что бы это ни был за скрипт, он использует $DISPLAY
значение для определения, запущен ли он в среде X11 или нет (если скрипт запущен, например, в среде рабочего стола, $DISPLAY
будет установлен). Его вообще не волнует фактическое значение.
Если он работает в X11, он устанавливает
DIALOG
значениеXdialog
, которое предположительно является программой X11 для отображения диалоговых окон.Если он не запущен в X11 (например, на машине без монитора или в сеансе SSH), он устанавливает
DIALOG
значениеdialog
, которое предположительно является программой curses (или, по крайней мере, текстовой) для отображения диалоговых окон.
Позже скрипт может использоваться $DIALOG
для отображения диалогового окна, подходящего для пользователя.