expr EXPRESSION
expr OPTION
Introduction
expr
command evaluates arithmetical expressions taking string arguments.
Options
expr
command print the value of EXPRESSION
to standard output.
EXPRESSION
may be:
ARG1 | ARG2
:ARG1
if it is neithernull
nor0
, otherwiseARG2
ARG1 & ARG2
:ARG1
if neither argument isnull
nor0
, otherwise0
ARG1 < ARG2
:ARG1
is less thanARG2
ARG1 <= ARG2
:ARG1
is less than or equal toARG2
ARG1 = ARG2
:ARG1
is equal toARG2
ARG1 != ARG2
:ARG1
is unequal toARG2
ARG1 >= ARG2
:ARG1
is greater than or equal toARG2
ARG1 > ARG2
:ARG1
is greater thanARG2
ARG1 + ARG2
: arithmetic sum ofARG1
andARG2
ARG1 - ARG2
: arithmetic difference ofARG1
andARG2
ARG1 * ARG2
: arithmetic product ofARG1
andARG2
ARG1 / ARG2
: arithmetic quotient ofARG1
divided byARG2
ARG1 % ARG2
: arithmetic remainder ofARG1
divided byARG2
substr
STRING POS LENGTH
: substring ofSTRING
,POS
counted from1
index
STRING CHARS
: index inSTRING
where anyCHARS
is found, or0
length STRING
: length ofSTRING
+ TOKEN
: interpretTOKEN
as a string, even if it is a keyword likematch
or an operator like/
Beware that many operators need to be escaped or quoted for shells.
Comparisons are arithmetic if both ARG
s are numbers, else lexicographical.
Pattern matches return the string matched between \(
and \)
or null
.
If \(
and \)
are not used, they return the number of characters matched or 0
.
Exit status is:
0
ifEXPRESSION
is neithernull
nor0
1
ifEXPRESSION
isnull
or0
2
ifEXPRESSION
is syntactically invalid3
if an error occurred
Examples
Logical
expr 3 '|' 2
3 # ARG1 is not null nor 0
expr 0 '|' 2
2 # ARG1 is 0
expr 0 '&' 2
0 # ARG1 is 0
expr 4 '&' 2
4 # ARG1 and ARG2 are not null nor 0
expr 4 '&' 0
0 # ARG2 is 0
expr 4 '&' ''
0 # ARG2 is null
Comparison
# like '==' in most programming languages
expr 55 = 23
0 # return 0: given numbers are not equal
expr 55 = 55
1 # return 1: given numbers are equal
expr 3 '<' 2
0 # return 0: left-side number is not minor than right-side number
expr 3 '>' 2
1 # return 1: left-side number is major than right-side number
Arithmetical
expr 55 + 96 - 23
128
a=82; b="$a + 6"; echo $b
82 + 6
expr $b
88
expr $a - $b
6
String
# evaluate the length of a string
expr length "Hello, World!"
13
# extract substrings from string variables
hello="HelloWorld"
expr substr $hello 3 4
lloW
# in sh and bash index starts at 1
expr index $hello W
6
Quotes
Manual reference: