```
$ echo $(echo x; echo y)
x y
$ a='echo x; echo y'
$ echo $($a)  # expect 'x y'
x; echo y

```

1. Why does command substitution behave in such way?
2. How to perform the command substitution for list of commands stored in a variable without using `eval` and `bash -c`?

`echo $(eval $a)` and `echo $(bash -c "$a")` actually does what I want, but I heard that using eval often is a wrong way to solve problems, so I want know how to manage without these commands (using `bash -c` is in fact just the same thing)