UNIX 从变量评估表达式

j.i*_*s.h 5 unix shell

我有一个带有数学表达式的变量。我想在 UNIX shell 中评估它并将结果存储在另一个变量中。我怎么做 ?

我尝试了以下但不起作用

var1="3+1"
var2=`expr "$var1"`
echo $var2
Run Code Online (Sandbox Code Playgroud)

var2 值应计算为 4。

And*_*ico 5

expr操作数和运算符之间需要空格。此外,您需要反引号来捕获命令的输出。以下将起作用:

var1="3 + 1"
var2=`expr $var1`
echo $var2
Run Code Online (Sandbox Code Playgroud)

如果您想评估任意表达式(超出 支持的有限语法expr),您可以使用bc

var1="3+1"
var2=`echo $var1 | bc`
echo $var2
Run Code Online (Sandbox Code Playgroud)


ami*_*t_g 5

你可以这样做

var2=$(($var1))
Run Code Online (Sandbox Code Playgroud)