๐ŸŽ New User? Get 20% off your first purchase with code NEWUSER20 ยท โšก Instant download ยท ๐Ÿ”’ Secure checkout Register Now โ†’
Menu

Categories

expr Command

Intermediate Shell Scripting man(1)

Evaluate expressions (arithmetic, string, comparison)

๐Ÿ‘ 121 views ๐Ÿ“… Updated: Apr 28, 2026
SYNTAX
expr EXPRESSION

What Does expr Do?

expr evaluates expressions and outputs the result. It performs integer arithmetic, string operations, and pattern matching. expr is a legacy tool โ€” most of its functionality is now handled better by bash built-in arithmetic.

expr supports addition, subtraction, multiplication, division, modulo, string length, substring extraction, and regex matching. All operators and operands must be separated by spaces.

While expr is POSIX-standard, bash arithmetic expansion $(( )) is preferred for calculations in modern scripts. expr remains useful in sh-compatible scripts that cannot use bash extensions.

Options & Flags

OptionDescriptionExample
+,-,*,/,% Integer arithmetic expr 10 + 5
length String length expr length "hello"
substr Substring extraction expr substr "hello" 1 3
: Pattern matching (regex) expr "file.txt" : ".*\.\(.*\)"
=,!= String comparison expr "abc" = "abc"
<,<=,>,>= Numeric comparison expr 10 ">" 5

Practical Examples

#1 Integer arithmetic

Adds two numbers.
$ expr 10 + 5
Output: 15

#2 Multiplication

Multiplies โ€” note the backslash to escape * from shell expansion.
$ expr 6 \* 7
Output: 42

#3 String length

Returns the number of characters in the string.
$ expr length "Hello World"
Output: 11

#4 Substring

Extracts 5 characters starting at position 7.
$ expr substr "Hello World" 7 5
Output: World

#5 Pattern matching

Extracts the year using regex.
$ expr "report_2024.pdf" : ".*_\([0-9]*\)"
Output: 2024

#6 In script assignment

Increments a counter variable.
$ count=$(expr $count + 1)

Tips & Best Practices

Use $(( )) instead: Bash arithmetic is simpler and faster: echo $((10 + 5)) instead of expr 10 + 5. Use expr only for POSIX sh scripts.
Escape * for multiplication: expr 6 * 7 fails because * is expanded by the shell. Use expr 6 \* 7 with backslash escape.
Spaces are required: Every operator and operand must be a separate argument: expr 10 + 5 works, expr 10+5 fails.

Frequently Asked Questions

How do I do math in bash?
Use $((expression)): echo $((10 + 5)). Or use expr for POSIX compatibility: expr 10 + 5.
Why does expr multiplication fail?
The * is expanded by the shell before expr sees it. Escape it: expr 6 \* 7 or use quotes: expr 6 '*' 7.
Should I use expr or $(( ))?
Use $(( )) in bash scripts โ€” it is faster and easier. Use expr only in scripts that must be POSIX sh compatible.

Download Shell Scripting Cheat Sheet

PDF Shell Scripting #1 PDF Shell Scripting #2
View all 31 Linux command cheat sheets โ†’

Master Linux with Professional eBooks

Curated IT eBooks covering Linux, DevOps, Cloud, and more

Browse Books โ†’