我试图遍历所有unsigned int(32位)。我以为我可以做到:
#!/bin/bash
for i in {0..4294967295}; do
echo $i
done
然而,对于bash 4.1,它打印出的全部是:
$ ./loop.sh
0
-1
我当然不能使用$ seq()构造,那么如何在bash中对所有uint32执行for循环?
答案 0 :(得分:2)
使用bash 4.2
,我会以您的示例获得SIGSEGV
。似乎问题是由于您在4294967295
循环中引入1
+ {0..4294967295}
个参数(基本上由for
扩展)导致其窒息的事实。
尽管如此,我观察到的SIGSEGV
和你观察到的错误行为都要保证报告问题。
home page表示主要讨论列表为<bug-bash@gnu.org>
。
您可以使用修改后的for
循环:
for((i=0;i<=4294967295;i++)); do echo $i; done
答案 1 :(得分:0)
请注意,这么多的值会占用太多内存,以至于无法在任何计算机上完成,因为它需要大量的内存