28

I have this bash script;

for (( i = 1 ; i <= 160 ; i++ )); do
  qsub myccomputations"${i}".pbs
done

Basically, I would prefer if there was a 1 second delay between each iteration. The reason is that at each iterations, it sends the program file mycomputation"${i}$.pbs to a core node for solving. The motivation is that solving in this instance involves the use of pseudo random numbers and the RNG I use (R's) uses CPU time as seed.

So how to you ask bash to

for (( i = 1 ; i <= 160 ; i++ )); do
  wait 1 sec    
  qsub myccomputations"${i}".pbs
done

2 Answers 2

55

Simply use sleep 1 in Bash.

for (( i = 1 ; i <= 160 ; i++ )); do
  sleep 1
  qsub myccomputations"${i}".pbs
done
1
  • you can use floating point number if you want to sleep less than 1 second
    – shellholic
    Feb 17, 2011 at 14:49
0

If you want to achieve what your topic suggests, you should use 'at'.

See

      man at

for more information.

2
  • 1
    thank you Olli. Indeed, i will rewrite the title, so it corresponds to the question, for future queries.
    – user2413
    Feb 17, 2011 at 15:31
  • at will not suspend a loop for a specific duration, but set a program / script for execution at a specific time.
    – Soren A
    Feb 15, 2018 at 12:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .