Forcibly break a for loop in sh
Solution 1:
The easiest way I know would be to suspend the foreground job (^Z
), then kill it using the job id (kill %<JOB_ID>
).
Example:
[me@host]$ while [ : ]; do less /etc/motd; done # Ctrl-C can't kill this
After a Ctrl+z
[1]+ Stopped less /etc/motd
[me@host]$ kill %1
[me@host]$
The number within the brackets ([1]
) at the beginning of the suspension message gives you the job id.
You can also list out ids of suspended jobs using the the jobs
command.