expr

Hello!

I want to evaluate some mathematical expressions in a script and I try to use 'expr' command.
Unfortunatally, when I have, for example,
expr 8.2 + 6
the result is 'expr: non-numeric argument'
Why ?
I work on SunOs 5.7.

Thanks in advance
Nathe

Seems like expr only accepts integers as operands.

but when I read the man of expr, it's written:
DESCRIPTION
Concatenates arg's (adding separator spaces between them),
evaluates the result as a Tcl expression, and returns the
value. The operators permitted in Tcl expressions are a
subset of the operators permitted in C expressions, and they
have the same meaning and precedence as the corresponding C
operators. Expressions almost always yield numeric results
(integer or floating-point values). For example, the
expression
expr 8.2 + 6
evaluates to 14.2. Tcl expressions differ from C expres-
sions in the way that operands are specified. Also, Tcl
expressions support non-numeric operands and string com-
parisons.

So it should work, no ?

What shell scripting are you trying to write actually? It sounds from the first post that you are writing a plain sh-like scripting using expr(1), but the manpage you quoted is a TCL manpage that describes expr in TCL, which accepts floating point arithmetic. If you are not dealing with TCL at all then you have simply read the wrong manpage.

Well, I think you are right... I try to write a csh script. I don't know why I have the TCL notice for expr instead of sh one. I work in a standard cmdtool window...

Thank you
Nathe

expr does not support floating point numbers.

One way around this is to use a shell that does support
floating point calculations. One such shell is ksh93. Another
is bash.

Another way is to make use of the bc(1) utility e.g.

result=\`echo"8.2 \+ 6" | bc\`
  • Finnbarr