36.21. Quick Reference: expr
expr is a very handy tool in shell programming, since it provides the ability to evaluate a wide range of arithmetic, logical, and relational expressions. It evaluates its arguments as expressions and prints the result.
expr arg1 operator arg2 [ operator arg3 ... ]
Arguments and operators must be separated by spaces. In many cases, an argument is an integer, typed literally or represented by a shell variable. There are three types of operators: arithmetic, relational, and logical.
Exit status (Section 35.12) values for expr are 0 if the expression evaluates nonzero and non-null, 1 if the expression evaluates to 0 or null, and 2 if the expression is invalid.
$ expr 5 + 10 / 2
Addition happens first; output is 7 (truncated from 7.5):
$ expr \( 5 + 10 \) / 2
Add 1 to variable i; this is how variables are incremented in Bourne shell scripts:
i=`expr "$i" + 1`
$ expr "$a" = hello
Output 1 (true) if variable b plus 5 equals 10 or more:
$ expr "$b" + 5 \>= 10
In the examples below, variable p is the string "version.100". This command returns the number of characters in p:
$ expr "$p" : '.*' Output is 11
Match all characters and print them:
$ expr "$p" : '\(.*\)' Output is "version.100"
Output the number of lowercase letters matched:
$ expr "$p" : '[a-z]*' Output is 7
Match a string of lowercase letters:
$ expr "$p" : '\([a-z]*\)' Output is "version"
Truncate $x if it contains five or more characters; if not, just output $x. (Logical OR uses the second argument when the first one is 0 or null, i.e., when the match fails.)
$ expr "$x" : '\(.....\)' "$x"
Copyright © 2003 O'Reilly & Associates. All rights reserved.