United States-English |
|
|
HP-UX Reference > Eexpr(1)HP-UX 11i Version 3: February 2007 |
|
NAMEexpr — evaluate arguments as an expression DESCRIPTIONexpr takes arguments as an expression, evaluates, then writes the result on the standard output. Terms in the expression must be separated by blanks. Characters special to the shell must be escaped. Note that 0, rather than the null string, is returned to indicate a zero value. Strings containing blanks or other special characters should be quoted. Integer-valued arguments can be preceded by a unary minus sign. Internally, integers are treated as 32-bit, 2's complement numbers. The operators and keywords are listed below. Characters that need to be escaped are preceded by \. The list is in order of increasing precedence with equal-precedence operators grouped within {} symbols.
EXTERNAL INFLUENCESEnvironment VariablesLC_COLLATE determines the collating sequence used in evaluating regular expressions and the behavior of the relational operators when comparing string values. LC_CTYPE determines the interpretation of text as single- and/or multi-byte characters, and the characters matched by character class expressions in regular expressions. LANG determines the language in which messages are displayed. If LC_COLLATE or LC_CTYPE is not specified in the environment or is set to the empty string, the value of LANG is used as a default for each unspecified or empty variable. If LANG is not specified or is set to the empty string, a default of "C" (see lang(5)) is used instead of LANG. If any internationalization variable contains an invalid setting, expr behaves as if all internationalization variables are set to "C" (see environ(5)). If UNIX_STD is set to 2003, it enables the UNIX 2003 Standard environment. RETURN VALUEAs a side effect of expression evaluation, expr returns the following exit values:
DIAGNOSTICS
EXAMPLESAdd 1 to the shell variable a: a=`expr $a + 1` For $a equal to either /usr/abc/file or just file, return the last segment of a path name (i.e., file). Beware of / alone as an argument because expr interprets it as the division operator (see WARNINGS below): expr $a : '.*/\(.*\)' \| $a A better representation of the previous example. The addition of the // characters eliminates any ambiguity about the division operator and simplifies the whole expression: expr //$a : '.*/\(.*\)' Return the number of characters in $VAR: expr $VAR : '.*' WARNINGSAfter argument processing by the shell, expr cannot tell the difference between an operator and an operand except by the value. If $a is an =, the command: expr $a = '=' resembles: expr = = = as the arguments are passed to expr (and they will all be taken as the = operator). The following works: expr X$a = X= |
Printable version | ||
|