Let's take a simple for loop
#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done
AFAIK semicolon in bash scripts makes shell execute current command synchronously and then go to the next one. Pressing enter does literally the same except it doesn't allow you to enter the following command, flushing the buffer immediately.
So why shell can't interpret the following line
for i in `seq 1 10`; do; echo $i; done
how does this for loop
actually work?