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

Adn*_*nan 3 shell

请告诉我,有必要使用"expr"关键字.

例如:-

 echo `expr a*b`
Run Code Online (Sandbox Code Playgroud)

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

例如:-

echo a*b
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Dig*_*oss 14

在Posix shell中,您可以在括起来时直接在shell中计算表达式

$(( ... ))
Run Code Online (Sandbox Code Playgroud)

所以:

a=12
b=34
echo $(($a + $b))
Run Code Online (Sandbox Code Playgroud)

虽然情况并非总是如此,但您可能遇到的所有Posix外壳也将处理:

echo $((a + b))
Run Code Online (Sandbox Code Playgroud)

这一切都发生了,因为很久以前,shell没有算术,因此expr编写了外部程序.这些天,expr通常是内置的(除了仍然在/ bin中)并且有$((...))可用的Posix 语法.如果$((...))从第一天开始就没有了expr.

shell不完全是一种普通的计算机语言,而不是一个宏处理器:它是一个CLI.它没有内联表达式; unquoted *是用于文件名匹配的通配符,因为CLI需要更频繁地引用文件而不是算术运算.


Ker*_* SB 6

第二种形式几乎肯定永远不会做你想要的.在Bash中,您有一个内置的数值表达式处理程序,但是:

A=4; B=6; echo $((A * B))
Run Code Online (Sandbox Code Playgroud)