Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sh(1)

test(1)

EXPR(1)  —  USER COMMANDS

NAME

expr − evaluate arguments as an expression

SYNOPSIS

expr arg ...

DESCRIPTION

Expr evaluates expressions as specified by its arguments.  Each token of the expression is a separate argument.  After evaluation, the result is written on the standard output. 

The operators and keywords are listed below.  The list is in order of increasing precedence, with equal precedence operators grouped. 

expr | expr
yields the first expr if it is neither null nor ‘0’, otherwise yields the second expr. 

expr & expr
yields the first expr if neither expr is null or ‘0’, otherwise yields ‘0’. 

expr relop expr
yields ‘1’ if the indicated comparison is true, ‘0’ if false.  The comparison is numeric if both expr are integers, otherwise the comparison is lexicographic.  relop is one of < (less than), <= (less than or equal to), = (equal to), != (not equal to), >= (greater than or equal to), and > (greater than). 

expr + expr

expr − expr
addition or subtraction of the arguments.

expr ∗ expr

expr / expr

expr % expr
multiplication, division, or remainder of the arguments.

expr : expr

match string regular-expression
The two forms of the matching operator above are synonymous.  The matching operator compares the string first argument with the regular expression second argument; regular expression syntax is the same as that of ed(1). The \(...\) pattern symbols can be used to select a portion of the first argument.  Otherwise, the matching operator yields the number of characters matched (‘0’ on failure). 

substr string integer-1 integer-2
extracts the subtring of string starting at position integer-1 and of length integer-2 characters.  If integer-1 has a value greater than string, expr returns a null string.  If you try to extract more characters than there are in string, expr returns all the remaining characters from string. Beware of using negative values for either integer-1 or integer-2 as expr tends to run forever in these cases. 

index string character-list
reports the first position in string at which any one of the characters in character-list matches a character in string.

length string
returns the length (that is, the number of characters) of string.

( expr )
parentheses for grouping.

EXAMPLES

To add 1 to the Shell variable a:

a=`expr $a + 1`

To find the filename part (least significant part) of the pathname stored in variable a, which may or may not contain ‘/’:

expr $a : ´.∗/\(.∗\)´ ´|´ $a

Note the quoted Shell metacharacters. 

SEE ALSO

sh(1), test(1)

DIAGNOSTICS

Expr returns the following exit codes:

0if the expression is neither null nor ‘0’,
1if the expression is null or ‘0’,
2for invalid expressions. 

BUGS

Note that the match, substr, length, and index operators cannot themselves be used as ordinary strings.  That is, the expression:

tutorial% expr index expurgatorious length
syntax error
tutorial%

generates the ‘syntax error’ message as shown instead of the value 1 as you might expect. 

Sun Release 3.2  —  Last change: 26 March 1984

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026