Why does the scipt executes only once the sqlscript
As you haven't shown us the sql files I'm going to take a guess that you haven't included the exit statement. This means that SQL*Plus will be invoked, run the commands/sql in the first file and then sit there waiting for the next SQL command. This means the 'sleep 2' command is never reached.

Try this in your sql file instead

 update db.table_name set column = bla where column=foo;
 commit;
 exit