Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

EXPR(1)

НАЗВАНИЕ
expr - обработка аргументов как выражений

СИНТАКСИС


 expr  аргумент ...

ОПИСАНИЕ
Команда expr трактует свои аргументы как выражения. Результат записывается на стандартный вывод. Операнды выражения должны быть разделены пробелами. Символы, имеющие для shell'а специальный смысл, должны быть экранированы. Заметим, что 0 возвращается в качестве числа, а не для обозначения пустой цепочки символов. Аргументы, содержащие пробелы или другие специальные символы, должны быть заключены в кавычки. Перед целыми числами может стоять знак минус. Внутреннее представление целых чисел - 32-битное, в дополнительном коде.

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

выражение \| выражение
Если первое выражение не пустое и не нулевое, то оно служит результатом; в противном случае - второе выражение.

выражение \& выражение
Если оба выражения не пустые и не нулевые, то результатом служит первое выражение; в противном случае - 0.

выражение { =, \>, \>=, \<, \<=, != } выражение
Если оба выражения - целые, они сравниваются как числа; в противном случае - как цепочки символов. Если условие истинно, результатом служит 1; в противном случае - 0.

выражение { +, - } выражение
Сложение и вычитание целочисленных аргументов.

выражение { \*, /, % } выражение
Умножение, деление и получение остатка от деления целочисленных аргументов.

выражение : выражение
Оператор сопоставления : сопоставляет первый аргумент со вторым, который должен быть регулярным выражением. Синтаксис регулярного выражения тот же, что и в редакторе ed(1), за исключением того, что все шаблоны трактуются как "закрепленные" и символ ^ не имеет специального значения. Обычно оператор сопоставления возвращает число успешно сопоставленных символов (0 при неудаче). Можно применять конструкцию \( ... \), чтобы выделить часть первого аргумента.

ПРИМЕРЫ

  1. Увеличение на 1 shell-переменной a.
    
      a=`expr $a + 1`
    
    
  2. Выделение из маршрутного имени файла простого имени (то есть из /usr/bin/ex выделяется ex). Внимание: одиночный символ / будет воспринят как операция деления.
    
      expr $a : '.*/\(.*\)' \| $a
    
    
    Приведем теперь более удачное решение. Добавление // устраняет проблемы, связанные с одиночным символом /, и упрощает выражение.
    
      expr //$a : '.*/\(.*\)'
    
    
  3. Подсчет числа символов в значении переменной V.
    
      expr $V : '.*'
    
    

СМ. ТАКЖЕ
ed(1), sh(1).

КОДЫ ЗАВЕРШЕНИЯ В качестве побочного эффекта вычисления выражений expr возвращает следующие коды завершения:


  0    Значение выражения отлично от нуля и от пустой це-

       почки символов.

  1    Значение выражения есть нуль  или  пустая  цепочка

       символов.

  2    Выражение некорректно.

ДИАГНОСТИКА
Команда expr выдает следующие сообщения об ошибках:


  syntax error 

     При ошибках в операторах или операндах.

  non-numeric argument 

     При попытках применения арифметических операций  к

     нечисловым цепочкам символов.

СЮРПРИЗЫ
Допустим, что мы хотим сравнить значение переменной a с каким-либо символом, имеющим для expr особый смысл, например, со знаком равенства. Пусть $a на самом деле является знаком равенства. Так как аргументы предварительно обрабатываются shell'ом, то команда


  expr $a = '='

будет воспринята как

  expr = = =

что синтаксически некорректно. В подобных случаях рекомендуется пользоваться таким приемом:

  expr X$a = X=

то есть добавить некоторый символ к обеим цепочкам, что никак не влияет на результат сравнения, однако позволяет избежать синтаксической ошибки

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...