I am having trouble coming up with the right combination of semicolons and/or braces. I'd like to do this, but as a one-liner from the command line:
while [ 1 ]
do
foo
sleep 2
done
I am having trouble coming up with the right combination of semicolons and/or braces. I'd like to do this, but as a one-liner from the command line:
while [ 1 ]
do
foo
sleep 2
done
If you want the while loop to stop after some condition, and your
foo
command returns non-zero when this condition is met then you can get the loop to break like this:For example, if the
foo
command is deleting things in batches, and it returns 1 when there is nothing left to delete.This works well if you have a custom script that needs to run a command many times until some condition. You write the script to exit with
1
when the condition is met and exit with0
when it should be run again.For example, say you have a python script
batch_update.py
which updates 100 rows in a database and returns0
if there are more to update and1
if there are no more. The the following command will allow you to update rows 100 at a time with sleeping for 5 seconds between updates:You can also make use of
until
command:Note that in contrast to
while
,until
would execute the commands inside the loop as long as the test condition has an exit status which is not zero.Using a
while
loop:Using a
for
loop:Another way using
until
:You can try this too WARNING: this you should not do but since the question is asking for infinite loop with no end...this is how you could do it.
I like to use the semicolons only for the WHILE statement, and the && operator to make the loop do more than one thing...
So I always do it like this
It's also possible to use sleep command in while's condition. Making one-liner looking more clean imho.
A very simple infinite loop.. :)
Fr your question it would be: