expr

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
expr
Original authorsDick Haight
(AT&T Bell Laboratories)
DevelopersVarious open-source and commercial developers
Initial release1979; 47 years ago (1979)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemUnix, Unix-like, IBM i
    PlatformCross-platform
    TypeCommand

    expr is a shell command that evaluates an expression and outputs the result. It evaluates integer or string expressions, including pattern matching regular expressions. Comparison operators (equal, not equal, less than, etc.) apply to both integer and string values. Integer-specific operations include: addition, subtraction, multiplication, division and modulus. String-specific operators include: match a regular expression; in some versions: find a set of characters in a string ("index"), find substring ("substr"), length of string ("length"). Each symbol (operator, value, etc.) in the expression must be given as a separate parameter. A common challenge with using the command is preventing the shell from acting on input indented to be the expression as something other than expression.

    Originally developed for Unix v7 and standardized by POSIX, the command is available on IBM i,[1] and for Windows via UnxUtils.[2][3]

    Example

    [edit | edit source]

    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 | edit source]

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Port of the most important GNU utilities to Windows
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]