Eric Blake wrote: > Perhaps rather than trying to improve bash {} expansion, you could use > coreutils seq instead.
Hi Eric, thank's for taking an interest. seq is not that much different from printf here, although I hadn't known of its formatting capabilities. This changes nothing of the fact that there are situations like the wget command in my last posting where calling a subcommand isn't going to help much. If I'd follow your argument, brace number sequences would not be needed at all, as you can somehow use seq in most cases. However brace sequences are part of bash, and for a good reason. For one they are a lot easier to write than subcommand invocation, for a second you don't have to worry so much about word splitting, and finally there are some more complex cases where using a subcommand will make the command much more complicated. To give you another example, highlighting the word-splitting issue: for i in $'This is record\n'{000..007}" of ${PWD}"; do echo "> $i <" done OK, yes, I could add all that text inside the loop, but I believe you can think of uses of word lists where this isn't so easy. As you can see, the escape string introduces spaces and a newline, and the variable may introduce arbitrary other characters. Together you have no obvious save character at which you can split the output of any subprocess into words. So word splitting now becomes a real problem, whereas with brace expansion the world splitting is implicit. Yes, I know, this as well can be solved using other tools, probably together with bash arrays. However there will be a huge overhead. On the other hand, brace expansion is intuitive, quick to write, easy to read, and gets the job done - if the job doesn't need the zero padding, or you apply my patch. Greetings, Martin von Gagern
signature.asc
Description: OpenPGP digital signature