I think it doesn't stop. Instead, it hangs inside the while loops:
Code:
while [ "$fore" != 0 ]
do
<commands>
done
this literally means while the value of fore is different from 0 do <commands>, but since there is no statement which will assign zero to the variable, it results in an infinite loop. Furthermore, at the end of the script there are some syntax errors: it is not necessary to use a while loop to test a condition, simply use an if/then construct. Also the double semicolon is out of place (it is for terminating case conditions only). Regarding your original question you can always use double quotes to enclose a string value, but in most cases it is not strictly necessary.
Just a hint: to debug scripts when you are in doubt about syntax and/or shell expansion, you can try to launch the script by
Code:
bash -x <scriptname>
this will give a trace of all the executed command. In this case you would have immediately noticed the infinite loop issue.