视频讨论回复只能200字,因此这里回答这位学生了。

首先很感谢你学习老男孩培训的高级实战shell视频!
我们先要理解while循环的意义,使用while循环的目的就是多次循环!
while循环是根据while关键字后面指定的条件决定是否退出的循环的。
如果你希望执行一次命令就退出,那么无需用while循环,使用while就表示你需要多次循环,好了,我猜测下,你的问题是希望true的条件下,如何退出循环吧?
如果是的话,那么大概有如下几个方法。
1、while后的条件不是为true永远为真,而是指定一个条件,那么条件不满足就退出了。
例子如下:

i=0while ((i<10))doecho $i((i++))sleep 1done

提示:

1)上述脚本执行10次循环,,即10秒后i就不会小于10了,因此循环自动退出。
2)上述脚本你可以直接命令行拷贝执行看效果。

2、还可以利用第一部分SHELL视频里的特殊变量$$来记录脚本进程的ID到固定文件里,希望退出时就读取文件里的脚本进程ID kill杀掉这个ID即可。例子如下:

[root@C58 ~]# cat w.sh#!/bin/shi=0echo "$$" >/var/run/shell.pidwhile truedoecho $i((i++))sleep 1[ $i -eq 3 ] && kill `cat /var/run/shell.pid`done[root@C58 ~]# sh w.sh012Terminated

提示:这里设置变量等于3就杀掉脚本进程。

3、其他方法
  可以手动查找PID kill PIDNO.
  或者查找进程名  pkill PROCESSNAME
  当然还有killall等命令可以使用。

希望解答的是你需要的!   

         ---- 老男孩老师  10:20 2013/9/12
另,有问题可以到答疑区发问。