Question: I know how to easily generate a list this way :

`echo {a,b,c,d}_{0..3}`

which will give:

`a_0 a_1 a_2 a_3 b_0 b_1 b_2 b_3 c_0 c_1 c_2 c_3 d_0 d_1 d_2 d_3`

But how to generate the same list, but with the second brace being expended with an higher priority, to obtain this? :

`a_0 b_0 c_0 d_0 a_1 b_1 c_1 d_1 a_2 b_2 c_2 d_2 a_3 b_3 c_3 d_3`

Any trick like sorting from the end, or from character *n* is OK, as long as it fits on one line. I am also using zsh, but something working with bash is fine.

Answer: 
Not strictly bash-in-house, but

```
printf "%s\n" {a,b,c,d}_{0..3} | sort -t_ -k2,2n

```
```
eval echo \{a..d\}_{0..3}

```

is enough

The first expansion -- by the shell -- is to

```
{a..d}_0 {a..d}_1 {a..d}_2 {a..d}_3

```

the second expansion by eval is then

```
a_0 b_0 c_0 d_0 a_1 b_1 c_1 d_1 a_2 b_2 c_2 d_2 a_3 b_3 c_3 d_3

```

The result is sent to stdout.