bash:对于带有无符号整数的循环



我正在尝试遍历所有无符号的int(32位)。我以为我可以简单地做:

#!/bin/bash
for i in {0..4294967295}; do
echo $i
done

但是,在 bash 4.1 中,它打印出来的只是:

$ ./loop.sh
0
-1

我当然不能使用 $seq() 结构,那么如何在所有 uint32 的 bash 中执行 for 循环呢?

使用bash 4.2,我得到了你的例子SIGSEGV。 问题似乎是由于您在for循环中引入了4294967295+1个参数(基本上扩展了{0..4294967295}个),导致它阻塞。

尽管如此,我观察到的SIGSEGV和您观察到的错误行为都保证报告该问题。

主页说主要讨论列表是<bug-bash@gnu.org>


您可以使用修改后的for循环:

for((i=0;i<=4294967295;i++)); do echo $i; done

请注意,这么多值会占用如此多的内存,以至于在任何计算机上都无法完成,因为它会占用大量内存

相关内容

  • 没有找到相关文章

最新更新