Hi, On Sun, Apr 18, 2021 at 09:26:28AM +0800, 積丹尼 Dan Jacobson wrote: > On (info "(coreutils) seq invocation") we read > Be careful when using ‘seq’ with outlandish values: otherwise you > may... > > Here's another 'fun/sad/DDOS yourself' example you might add: > > One day I wrote a Makefile, > m: > seq 0 9|sed s/$$/號.html/|xargs make > but before using it, I though I'll just test with one item, > m: > seq 0 |sed s/$$/號.html/|xargs make > well of course... as seq prints nothing here, > this triggered a massive ever growing recursive loop... > > Yes, all my fault for picking 0. I'll pick 1 next time. > > P.S., perhaps document how to get seq to cough up just "0". One way I > found was: > $ seq 0 1 0 > 0
I would like to add more information to this bug report with the intent of helping everybody involved now or in the future. A slighly simpler method to make 'seq' print just '0' is: $ seq 0 0 0 This is documented, but more generally, e.g., in 'seq --help': $ seq --help Usage: seq [OPTION]... LAST or: seq [OPTION]... FIRST LAST or: seq [OPTION]... FIRST INCREMENT LAST Print numbers from FIRST to LAST, in steps of INCREMENT. [...] If FIRST or INCREMENT is omitted, it defaults to 1. [...] [...] Thus, 'seq 0' is the same as 'seq 1 1 0' and 'seq 0 0' is the same as 'seq 0 1 0'. The default value of '1' for omitted parameters affects other values, too, not just '0': $ seq -1 $ seq -1 -1 -1 $ seq -100000 $ seq -100000 -100000 -100000 When "FIRST" and "LAST" are the same, any valid "INCREMENT" value results in 'seq' printing just one value, not just the default of '1': $ seq 0 200 0 0 $ seq 0 -200 0 0 $ seq 0 0 0 seq: invalid Zero increment value: ‘0’ Try 'seq --help' for more information. Thus IMHO a possible addition to the documentation should probably not just single out 'seq 0', but mention any number smaller than the default value for "FIRST" of '1'. HTH, HAND Erik -- Inside every large problem is a small problem struggling to get out. -- Hoare's Law of Large Problems