expr

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
expr
Original author(s)Dick Haight
(AT&T Bell Laboratories)
Developer(s)Various open-source and commercial developers
Initial release1979; 43 years ago (1979)
Operating systemUnix, Unix-like, IBM i
PlatformCross-platform
TypeCommand

expr is a command line utility on Unix and Unix-like operating systems which evaluates an expression and outputs the corresponding value. It first appeared in Unix v7. The expr command has also been ported to the IBM i operating system.[1]

Overview[edit]

expr evaluates integer or string expressions, including pattern matching regular expressions. Each symbol (operator, value, etc.) in the expression must be given as a separate parameter. Most of the challenge posed in writing expressions is preventing the invoking command line shell from acting on characters intended for expr to process.

Syntax[edit]

Syntax: expr expression

The operators available

  • for integers: addition, subtraction, multiplication, division and modulus
  • for strings: match a regular expression; in some versions: find a set of characters in a string ("index"), find substring ("substr"), length of string ("length")
  • for either: comparison (equal, not equal, less than, etc.)

Example[edit]

The following is a (non-POSIX-compliant) example involving boolean expressions:

expr length  "abcdef"  "<"  5  "|"  15  -  4  ">"  8

This example outputs "1". This is because length "abcdef" is 6, which is not less than 5 (so the left side of the | returns zero). But 15 minus 4 is 11 and is greater than 8, so the right side is true, which makes the or true, so 1 is the result. The program exit status is zero for this example.

For pure arithmetic, it is often more convenient to use bc. For example:

echo "3 * 4 + 14 / 2" | bc

since it accepts the expression as a single argument.

For portable shell programming, use of the "index", "length", "match" and "substr" commands must be avoided; string matching remains possible but it must use the "string : regexp" syntax.

See also[edit]

References[edit]

  1. ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Retrieved 2020-09-05.

External links[edit]