On 14Oct2007 17:09, John Summerfield <debian@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Cameron Simpson wrote: >> On 14Oct2007 14:39, I wrote: >> | Please read scripts carefully if you're going to criticise. Criticism is >> | welcome, if it's valid. >> Sorry for my tone. I have a headache and didn't allow for it. > > I'm more concerned that your "facts" aren't. Oh, but they _are_! > It doesn't matter how one creates the commandline, there is a limit on its > size. Here, I'm not concerned about side effects of bad characters such as > & and ;. Sure, but in the code we're discussing: for m in subdir/*report* that limit is not hit. Why not? Because the limit only applies to exec() calls. It is an OS interface limit. For loops take place entirely in user space. There is no "command line" being constructed in the sense you're thinking. > See /usr/include/linux/limits.h for its value. But again, irrelevant, because the code does not call the interface to which that limit applies. It is perfectly possible to say: for file in some-huge-glob ... regardless of now big that may be, subject only to the machines VM limits and any bugs in the shell. Note the difference from: some-command some-huge-glob ... Because invoking the command requires exec*()ing it, the limit applies to the argument list. If you're sure I'm wrong, construct a reproducable counter example. Cheers, -- Cameron Simpson <cs@xxxxxxxxxx> DoD#743 http://www.cskk.ezoshosting.com/cs/ I thought about being born again, but my mother refused.