On Monday, July 11, 2011 17:20:31 Rich Felker wrote:
> On Mon, Jul 11, 2011 at 11:19:01AM -0400, Mike Frysinger wrote:
> > > in addition to that, the braces only get expanded if the usage warrants
> > > it. so if the braces are quoted, or dont follow the simple syntax, the
> > > braces get passed through like any other char.
> > >
> > > $ echo {0..10
> > > {0..10
> > > $ echo '{0..10}'
> > > {0..10}
> > >
> > > i doubt many scripts will hit this
>
> Irrelevant. Some will. and you break them. Bash does not break them
> because brace expansion is off-by-default in non-interactive shells.
sorry, but that's incorrect. bash does brace expansion by default. only `set
+B` turns it off. the man page says this, as does simple testing.
$ readlink /bin/sh
bash
$ sh -c 'echo {a,b}'
a b
$ printf '#!/bin/sh\necho {a,b}' > test.sh
$ sh ./test.sh
a b
$ chmod a+rx test.sh
$ ./test.sh
a b
> > also worth noting that the brace is already a semi-reserved character
> > in POSIX itself. you get semi-subshells and functions with it. so
> > concern about it being reserved is kind of a red herring.
>
> Completely different context, also irrelevant. POSIX specifies that
> "echo {a,b}" prints the string "{a,b}" not "a b".
my point is that the breakage is minor and the real world impact is
insignificant at best. and, again, if *you* dont want this behavior, then
*dont enable it in your busybox config*.
-mike
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
