///Bash 3.00 brace expansion

Bash 3.00 brace expansion

Bash 3.00 brace expansion

Ah, finally: no more of

for i in 1 2 3 4 5 6 7 8 9 0

do
.. whatever
done

With Bash 3.0, we now have brace expansion for lists:

for i in {1..10} ; do echo $i ; done

Prior to this, we sometimes used "seq", which could result in such awful things as:

for i in `seq 65 69`; do echo -e `printf '\\%03o' $i`; done

Ugly. The Bash 3.0 way is so much cleaner:

for i in {A..E}; do echo $i;done

This also works for more traditional brace expansion use:

$  echo foo{1..4}bar

foo1bar foo2bar foo3bar foo4bar
# used to be done as
$ echo foo{1,2,3,4}bar
foo1bar foo2bar foo3bar foo4bar

Nesting of course still works:

echo foo{bar{1..3},-is-done}

foobar1 foobar2 foobar3 foo-is-done

and you can use it for such tasks as:

mkdir {A..D}{1..3}{0-9}

which would have required nested loops before Bash 3.0

2010-05-25T23:06:17+00:00 October 4th, 2005|Linux|0 Comments

About the Author:

Leave A Comment