Sleeping for less than a second is not a real good idea in a script. The overhead required to launch a process is too great. The right thing would be to switch to c. But it is easy to write a program like sleep that will sleep for less than a second if you want to give it a try. I wrote one that I call "nodoff". It sleeps for milliseconds. So "nodoff 500" is a half a second. Here it is...
#ifdef __STDC__
#define PROTOTYPICAL
#endif
#ifdef __cplusplus
#define PROTOTYPICAL
#endif
#include <stdlib.h>
#include <sys/time.h>
#ifdef PROTOTYPICAL
int main(int argc, char *argv[])
#else
main(argc,argv)
char *argv[];
#endif
{
int millisecs, microsecs;
struct timeval tv;
millisecs=atoi(argv[1]);
microsecs=millisecs*1000;
tv.tv_sec=microsecs/1000000;
tv.tv_usec=microsecs%1000000;
select(0, NULL, NULL, NULL, &tv);
exit(0);
}