mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

      EXPR(1)                                                 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=

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



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк