Sleep command

Hi All,

i am very new to shall script . i am not that much aware of sleep command ,
i want to terminate the sleep command after certain time.
following is my code.

while [ "$messag" ! ="P" ]
loop
sleep 1800
messag=/status.sql
done

the script will be on sleep untill the messag be comes P. here my requirement is . if the sleep function goes beyond 8 hours.. i want to come out from the sleep mode and i want to exit from the rest of the script.

for that i have written if statement. but.. is there any command with terminates the sleep mode after certain time.

while [ "$messag" != "P" ]
loop
 if [ $count -ge 10 ]
 then 
 exit 0;
    else 
  sleep 1800
messag=/status.sql
count=$[$count+1]
done

but my logic is wrong.. pls any one help me out from this problem

Thanks
Sree

I guess the following code snippet can help

#setting counter value
timeElapsed=1800
while [ "$messag" != "P" ]
loop
    sleep 1800 
    messag=/status.sql
    #incrementinc counter value
    timeElapsed=`expr ${timeElapsed} + 1800`
    # checking the counter value is equal to 8 hours (28800 seconds)
    if [ ${timeElapsed}  -eq 28800 ]; then
       echo "8 Hour Time Out reached exiting !!!"
       #break or exit 0 as per your need
       exit 0
    fi
done

Hi ,

My Question is , is there any command which automatically terminates the sleep command. or is there any way to give sleep command that has to work for given hours and after that the sleep function should not work.

like

while [ "$messag" ! ="P" ]
loop
  sleep 1800
  messag=/status.sql
done

sleep 1800 ,.. it means it will be in loop till 30 mints.. and again it will check the condition if it is false again it will go to sleep for another 30 mints .. like i want to work sleep command up to 2 hours.. if it is beyond 2 hours .. sleep command should come out ..and it should come out of the execution .
please help me out from this problem so that am very thank full to every one

Thanks
Sree

Try using the code with ksh shell ..

cnt=0
messag=P
while [ $cnt -le 4 ]
do
        [ "$messag" != "P" ] && exit || cnt=$((cnt+1))
        sleep 1800
        messag=/status.sql 
        [ $cnt -eq 4 ] && exit || echo "Count: $cnt"
done

Hi All,

Thanks for replies .. my problem is resolved ...
for my curiousness am asking one more question... like is there any command with terminates the sleep mode of a job.. ... is there any way to set the sleep out timings .. i means the script should sleep only for 3 hours .. if it goes beyond 3 hours it should come out of the script.
i will give u more detail

while [ "$messag" ! ="P" ]
loop
  sleep 1800
  messag=/status.sql
done

the script will sleep untill the messag becomes "P"... it may take one hour or 5 hours ... so my thing is while defining the sleep timing is there any way to give sleep time out after 3 hours .? is there any command like sleep out.

please let me know if there is such command.

Thanks
Sree