let vs expr vs shell中的双括号算法

时间:2014-03-13 19:58:35

标签: shell math arithmetic-expressions

当我第一次学习shell脚本时,我看到很多例子使用let进行基本算术,但后来我发现某些环境没有let作为内置,但支持使用expr代替(尽管速度明显较慢)。

但是,在许多shell中也可以使用双括号来执行算术,例如$((54 + 102))

由于我正在编写一个可移植性的脚本,这提供了一个可能性的雷区;目前我正在使用两个不同的包装函数(一个用于let,一个用于expr)并使用快速测试来决定在我的其余脚本中使用哪一个。

无论如何,我想知道的是,是否有人可以澄清这三个算术命令(以及我错过的任何其他算法命令)的兼容性。我希望双括号形式可能很常见,我可以放弃兼容性检查,但搜索是一件很难的事情,所以我决定来这里并要求确定。

请注意我只对常规算术感兴趣,我想我已经涵盖了我可能需要处理的几个大整数。

1 个答案:

答案 0 :(得分:6)

$(( ... ))在POSIX标准中定义,可能是您需要的便携式。

相关问题