Wrong parsing &, | or ; characters

For example:
$ echo te&st
*** unknown command: st

$ echo te\\&st
*** unknown command: st

after change
$ echo te&st
*** unknown command: st

$ echo te\\&st
te&st