在Shell脚本中处理算术表达式

3

请告诉我是否有必要使用"expr"关键字。

例如:

 echo `expr a*b`

我们可以使用简单的算术运算符来处理算术表达式。

例如:

echo a*b

提前感谢您。


我正在使用Bash Shell。问题中提到的第一种方法不能用于计算算术表达式吗? - Adnan
3个回答

15
在Posix shell中,当表达式被括在``$((...))``内时,它们可以直接在shell中评估。
$(( ... ))

所以:

a=12
b=34
echo $(($a + $b))

虽然这不是永远的情况,但你可能会遇到的所有Posix shell也会处理以下内容:

echo $((a + b))

这一切都是因为很久以前,shell不支持算术运算,所以就写了外部程序expr。如今,expr通常是内置的(除了/bin里还有),并且有Posix的$((...))语法可用。如果从一开始就有$((...)),就不会有expr了。

Shell不完全是一种普通的计算机语言,也不完全是一个宏处理器:它是一个CLI。它不执行内嵌表达式;未加引号的*是用于文件名匹配的通配符,因为CLI更常需要引用文件而不是进行算术运算。


6
第二种形式几乎肯定不能满足您的需求。在Bash中,您有一个内置的数字表达式处理程序,如下所示:
A=4; B=6; echo $((A * B))

2

您可以使用$(())进行算术运算。

echo $((2*3))

结果为6


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接