1

我很好奇let命令在 shell 中的局限性;我尝试搜索信息,但不幸的是,这是一个非常常见的词,而且它是一个内置的 shell,因此许多手册页实际上并没有描述它的作用。

然而,我一直将它用于基本的算术运算,但对于较大的值,我担心是否let可能有限制,可能会导致以后出现问题。我知道bc它旨在处理任意精度值,如果我知道它将可用,我更喜欢使用它,但我正在使用的某些平台没有它。我的倾向是将代码馈送值转换bc为使用let,但它有多大限制?例如,它是否在特定的整数宽度下工作,这个平台是否特定?如果相关,我还想知道是否let有任何常见的非标准功能或变体,所以我可以避免使用这些。

基本上,我希望得到的答案是对let可以使用的值的任何限制的总结,以及它的哪些特性特定于它所运行的平台或架构特性。

4

1 回答 1

1

根据您定义更大值的方式,您的担忧是有效的。

让“固定”整数算法没有任何溢出检查,“固定宽度”取决于实现/系统。我不知道posix是否定义了最小“宽度”。如果我没记错的话,bash 使用 long 进行计算。

关于可移植性的说明;Korn、bash 和 POSIX 兼容的 shell 允许,旧的 bo​​urne shell 不允许。

于 2013-08-06T19:25:17.400 回答