until <LIST1> ; do <LIST2> done
The until-loop is relatively simple in what it does: it executes the command list <LIST1> and if the exit code of it was not 0 (FALSE) it executes <LIST2>. This happens again and again until <LIST1> returns TRUE.
This is exactly the opposite of the while loop.
Like all loops (both for-loops, while and until), this loop can be
break command, optionally as break N to break N levels of nested loopscontinue command, optionally as continue N analog to break N
The return status is the one of the last command executed in <LIST2>, or 0 (TRUE) if none was executed.