当我第一次学习shell脚本时,我看到很多例子使用let
进行基本算术,但后来我发现某些环境没有let
作为内置,但支持使用expr
代替(尽管速度明显较慢)。
但是,在许多shell中也可以使用双括号来执行算术,例如$((54 + 102))
。
由于我正在编写一个可移植性的脚本,这提供了一个可能性的雷区;目前我正在使用两个不同的包装函数(一个用于let
,一个用于expr
)并使用快速测试来决定在我的其余脚本中使用哪一个。
无论如何,我想知道的是,是否有人可以澄清这三个算术命令(以及我错过的任何其他算法命令)的兼容性。我希望双括号形式可能很常见,我可以放弃兼容性检查,但搜索是一件很难的事情,所以我决定来这里并要求确定。
请注意我只对常规算术感兴趣,我想我已经涵盖了我可能需要处理的几个大整数。
答案 0 :(得分:6)
$(( ... ))
在POSIX标准中定义,可能是您需要的便携式。