Issue
I want to write a Bash script to process text, which might require a while loop.
For example, a while loop in C:
int done = 0;
while(1) {
...
if(done) break;
}
I want to write a Bash script equivalent to that. But what I usually used and as all the classic examples I read have showed, is this:
while read something;
do
...
done
It offers no help about how to do while(1){}
and break;
, which is well defined and widely used in C, and I do not have to read data for stdin.
Could anyone help me with a Bash equivalent of the above C code?
Solution
It's not that different in bash
.
workdone=0
while : ; do
...
if [ "$workdone" -ne 0 ]; then
break
fi
done
:
is the no-op command; its exit status is always 0, so the loop runs until workdone
is given a non-zero value.
There are many ways you could set and test the value of workdone
in order to exit the loop; the one I show above should work in any POSIX-compatible shell.
Answered By - chepner Answer Checked By - Gilberto Lyons (WPSolving Admin)