36.21. Quick Reference: exprexpr 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. 36.21.1. SyntaxHere's the syntax. The [brackets] mean "optional"; don't type the brackets: 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.
36.21.2. ExamplesDivision happens first; output is 10: $ 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` Output 1 (true) if variable a is the string "hello": $ 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. |
|