Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
expr(1)				 User Commands			       expr(1)

       expr - evaluate arguments as an expression

       /usr/bin/expr argument...

       /usr/xpg4/bin/expr argument...

       /usr/xpg6/bin/expr argument...

   /usr/bin/expr, /usr/xpg4/bin/expr
       The  expr  utility  evaluates  the  expression and writes the result to
       standard	output.	The character 0	is written to indicate	a  zero	 value
       and nothing is written to indicate a null string.

       The  expr  utility  evaluates  the  expression and writes the result to
       standard	output followed	by a NEWLINE. If there is no result from  expr
       processing, a NEWLINE is	written	to standard output.

       The  argument  operand  is evaluated as an expression. Terms of the ex-
       pression	must be	separated by blanks. Characters	special	to  the	 shell
       must be escaped (see sh(1)). Strings containing blanks or other special
       characters should be quoted. The	length of the expression is limited to
       LINE_MAX	(2048 characters).

       The  operators  and  keywords are listed	below. The list	is in order of
       increasing precedence, with equal precedence operators  grouped	within
       {} symbols. All of the operators	are left-associative.

       expr \| expr

	   Returns  the	evaluation of the first	expr if	it is neither NULL nor
	   0; otherwise, returns the evaluation	of the second expr  if	it  is
	   not NULL; otherwise,	0.

       expr \& expr

	   Returns  the	first expr if neither expr is NULL or 0, otherwise re-
	   turns 0.

       expr{ =,	\>, \>=, \<, \<=, !=} expr

	   Returns the result of an integer comparison if both	arguments  are
	   integers, otherwise returns the result of a string comparison using
	   the locale-specific coalition sequence. The result of each compari-
	   son will be 1 if the	specified relationship is TRUE,	0 if the rela-
	   tionship is FALSE.

       expr { +, - } expr

	   Addition or subtraction of integer-valued arguments.

       expr { \*, /, %}	expr

	   Multiplication, division, or	remainder of the integer-valued	 argu-

       expr : expr

	   The	matching  operator  : (colon) compares the first argument with
	   the second argument,	which must be an internationalized basic regu-
	   lar	expression (BRE), except that all patterns are anchored	to the
	   beginning of	the string. That is, only sequences  starting  at  the
	   first  character of a string	are matched by the regular expression.
	   See regex(5)	and NOTES. Normally, the /usr/bin/expr matching	opera-
	   tor	returns	the number of bytes matched and	the /usr/xpg4/bin/expr
	   matching operator returns the number	of characters  matched	(0  on
	   failure).  If the second argument contains at least one BRE sub-ex-
	   pression [\(...\)], the matching operator returns the string	corre-
	   sponding to \1.


	   An  argument	 consisting only of an (optional) unary	minus followed
	   by digits.


	   A string argument that cannot be identified as an integer  argument
	   or as one of	the expression operator	symbols.

   Compatibility Operators (x86	only)
       The following operators are included for	compatibility with INTERACTIVE
       UNIX System only	and are	not intended to	be used	 by  non-  INTERACTIVE
       UNIX System scripts:

       index string character-list

	   Report  the first position in which any one of the bytes in charac-
	   ter-list matches a byte in string.

       length string

	   Return the length (that is, the number of bytes) of string.

       substr string integer-1 integer-2

	   Extract the substring of string starting at position	integer-1  and
	   of  length  integer-2 bytes.	 If integer-1 has a value greater than
	   the number of bytes in string, expr returns a null string.  If  you
	   try	to  extract  more bytes	than there are in string, expr returns
	   all the remaining bytes from	string.	Results	are unspecified	if ei-
	   ther	integer-1 or integer-2 is a negative value.

       Example 1: Adding an integer to a shell variable

       Add 1 to	the shell variable a:

       example$	a=`expr	$a + 1`

       Example 2: Returning a path name	segment

       The  following example emulates basename(1), returning the last segment
       of the path name	$a. For	$a equal to either /usr/abc/file or just file,
       the  example  returns file. (Watch out for / alone as an	argument: expr
       takes it	as the division	operator.  See NOTES below.)

       example$	expr $a	: '.*/\(.*\)' \| $a

       Example 3: Using	// characters to simplify the expression

       Here is a better	version	of the previous	example. The addition  of  the
       //  characters eliminates any ambiguity about the division operator and
       simplifies the whole expression.

       example$	expr //$a : '.*/\(.*\)'

       Example 4: Returning the	number of bytes	in a variable

       example$	expr "$VAR" : '.*'

       Example 5: Returning the	number of characters in	a variable

       example$	expr "$VAR" : '.*'

       See environ(5) for descriptions of the following	environment  variables
       that  affect the	execution of expr: LANG, LC_ALL, LC_COLLATE, LC_CTYPE,

       As a side effect	of expression evaluation, expr returns	the  following
       exit values:

       0	If the expression is neither NULL nor 0.

       1	If the expression is either NULL or 0.

       2	For invalid expressions.

       >2	An error occurred.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Availability		     |SUNWcsu			   |
       |CSI			     |enabled			   |
       |Interface Stability	     |Standard			   |

       basename(1),   ed(1),   sh(1),	Intro(3),  attributes(5),  environ(5),
       regex(5), standards(5)

       syntax error	       Operator	and operand errors.

       non-numeric argument    Arithmetic is attempted on such a string.

       After 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:

       example$	expr $a	= '='

       looks like:

       example$	expr = = =

       as the arguments	are passed to expr (and	they are all taken  as	the  =
       operator). The following	works:

       example$	expr X$a = X=

   Regular Expressions
       Unlike  some previous versions, expr uses Internationalized Basic Regu-
       lar Expressions for all system-provided locales.	Internationalized Reg-
       ular Expressions	are explained on the regex(5) manual page.

SunOS 5.10			  29 Aug 2003			       expr(1)


Want to link to this manual page? Use this URL:

home | help