2019-03-31 11:05:09 +02:00
.. _cmd-while:
2018-12-16 17:39:33 -08:00
while - perform a command multiple times
2019-01-02 20:10:47 -08:00
========================================
2018-12-16 17:39:33 -08:00
2018-12-17 17:58:24 -08:00
Synopsis
--------
2018-12-16 13:08:41 -08:00
2019-09-17 17:59:04 +08:00
::
while CONDITION; COMMANDS...; end
2018-12-17 17:58:24 -08:00
2018-12-16 13:08:41 -08:00
2018-12-18 18:44:30 -08:00
Description
2019-01-02 20:10:47 -08:00
-----------
2018-12-16 13:08:41 -08:00
2018-12-19 12:02:45 -08:00
`` while `` repeatedly executes `` CONDITION `` , and if the exit status is 0, then executes `` COMMANDS `` .
2018-12-16 13:08:41 -08:00
2019-02-24 15:01:16 -08:00
The exit status of the while loop is the exit status of the last iteration of the `` COMMANDS `` executed, or 0 if none were executed. (This matches other shells and is POSIX-compatible.)
2018-12-16 13:08:41 -08:00
2019-03-31 11:24:04 +02:00
You can use :ref: `and <cmd-and>` or :ref: `or <cmd-or>` for complex conditions. Even more complex control can be achieved with `` while true `` containing a :ref: `break <cmd-break>` .
2018-12-16 13:08:41 -08:00
2018-12-18 18:44:30 -08:00
Example
2019-01-02 20:10:47 -08:00
-------
2018-12-16 13:08:41 -08:00
2018-12-18 19:14:04 -08:00
::
while test -f foo.txt; or test -f bar.txt ; echo file exists; sleep 10; end
2021-02-02 08:35:38 +01:00
# outputs 'file exists' at 10 second intervals,
# as long as the file foo.txt or bar.txt exists.
2018-12-18 19:14:04 -08:00