Тест, если число от диапазона <0, бесконечность)

X11 и настольные среды играют различные роли.

X11 является протоколом сервера дисплея. Наиболее распространенным сервером дисплея, реализовывая этот протокол является X.org. Это сочетает следующие основные функции от более низкого уровня вверх:

  • видео и входные драйверы;
  • холст для продвиганий (слушающийся как “тянут светло-зеленый прямоугольник в этих координатах”), и ввел события (сгенерированный с клавиатур, мышей и т.п.);
  • понятие окна, с каждым окном, получающим некоторую часть экранной недвижимости, порядок укладки окон от фона до переднего плана и одного окна во время, получающее входные события (который известен как наличие фокуса).

X11 не имеет никакой жизнеспособной альтернативы (хотя Уэйленд может получить там одно из этих десятилетий). Это - часть каждого уровня GUI системы Unix.

Вдобавок к X11 Вам нужен менеджер окон. Менеджер окон обрабатывает вещи как художественные оформления на окнах (границы, строки заголовка, и т.д.), манипуляции окном (движущиеся и изменяющие размер окна, значки, и т.д.), стратегии фокуса (например, фокусировка окна при нажатии на него) и т.д. X11 содержит встроенный менеджер окон, но это чрезвычайно сыро.

Некоторые, но не все, менеджеры окон являются частью настольной среды. Настольная среда обеспечивает дополнительные функции как способы запустить программы (например, меню), апплеты (часы, переключатель рабочей области, интерфейс конфигурирования, …), и так далее. Настольная среда часто идет с комплектом приложений, которые имеют тот же стиль, но могут использоваться независимо также.

Gnome, KDE и LXDE являются всеми настольными средами. Они идут с менеджером окон (Gnome дает Вам, выбор, KDE и LXDE имеют их собственное).

0
21.11.2013, 22:07
2 ответа

С любой подобной Границе оболочкой (то есть, еще возвращаясь 70-е):

case $2 in
  "" | *[!0-9]*) echo >&2 not OK; exit 1;;
  *) echo OK;;
esac
1
28.01.2020, 02:28

От Вашего вопроса и комментариев, Вам нужно $2 быть неотрицательным целым числом:

if [[ "$2" =~ ^[0-9]+$ ]]
then
...

Отметьте также это if записан с нижним регистром i.

Если Ваша версия Bash не поддерживает регулярные выражения (<3.x), можно использовать grep сделать тяжелый подъем для Вас:

if printf "%s\n" "$2" | grep -qE '^[0-9]+$'
then
...

но см. комментарий Stephane для возможного протеста этого подхода.

2
28.01.2020, 02:28
  • 1
    +1, но это, конечно, принимает это $2 число. –  terdon♦ 21.11.2013, 18:41
  • 2
    @terdon Вы правы, конечно. Я обновил ответ. Спасибо :) –  Joseph R. 21.11.2013, 18:50
  • 3
    спасибо за Ваш ответ. Но можно ли сказать что-то больше относительно того, каков тот рекурсивный метод? Я слышу, что это в 1-й раз предполагает, что Вы запускаете свой скрипт как это: script.sh -d 3 в этом случае $2 будет тем, что Вы даете после -d. Как Вы тестируете его? –  terdon♦ 21.11.2013, 18:55
  • 4
    Ваш grep можно было бы сказать это $'123\nblah' верный номер.См. также expr : оператор. –  Stéphane Chazelas 21.11.2013, 19:26
  • 5
    @xpukm я не знаю, какова проблема. Между тем существуют также протесты Stephane иметь дело с, и необходимо обновить вопрос сказать нам, которых из числовых форматов предлагает Stephane, допустимы для варианта использования и которые не являются. спасибо –  Joseph R. 21.11.2013, 19:37

Теги

Похожие вопросы