What is the main difference between $(())
and expr
in Unix-Like systems?
Asked
Active
Viewed 1,119 times
3

gniourf_gniourf
- 44,650
- 9
- 93
- 104

SuckLips
- 55
- 1
- 11
-
1@andlrc That isn't relevant at all. – 123 Jun 08 '16 at 10:48
-
1`$(())` is for bash arithmetic. expr is for evaluating expressions, this can be arithmetic or strings. Looking in the bash man page for `$(())` and the `expr` man page will tell you everything both commands can do. – 123 Jun 08 '16 at 10:50
-
Not just bash arithmetic. `$(( ))` has been in the POSIX sh spec since it was published in 1991. – Charles Duffy Jun 22 '16 at 14:44
2 Answers
3
$(())
will almost certainly be within the shell that you are using.
expr
may be an external call

gniourf_gniourf
- 44,650
- 9
- 93
- 104

Pwl256
- 56
- 1
-
Both are specified by POSIX. You might be able to construct a scenario where it is useful to use a command rather than built-in syntax for arithmetic, but by and large `$((...))` has replaced `expr` for all but regular expressions. – chepner Jun 08 '16 at 11:30
0
expr
is a holdover from the early days of the Bourne shell. You should avoid expr
unless you are forced to create scripts which need to be interoperable with legacy (pre-POSIX) sh
implementations. (It's not too long ago since Solaris sh
fell into this category, for example.)

tripleee
- 175,061
- 34
- 275
- 318