视频讨论回复只能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另,有问题可以到答疑区发问。