On Mon, Feb 3, 2014 at 2:22 PM, Greg Wooledge <wool...@eeg.ccf.org> wrote: > On Sat, Feb 01, 2014 at 05:36:17PM +0100, Mathieu Malaterre wrote: >> #!/bin/bash >> >> for i in {0..4294967295}; do >> echo $i >> done > > Others said not to do that. They are correct, but they didn't tell you > what to do instead. > > for ((i=0; i<=4294967295; i++)); do > echo $i > done > > The brace expansion form actually expands to the full list of strings, > all at once, which means they are all stored in memory at once. Most > computers don't have that much memory (something like 40 GB to hold > your 4 billion strings, of variable length from 2 to 11 bytes each). > The C-style for loop doesn't generate them all at once, so it only uses > a few bytes of memory.
Thanks ! Problem solved. I still believe the SIGSEGV should be handled in a more graceful way, at least on a Linux kernel. -- Mathieu