我們先要理解while循環的意義,使用while循環的目的就是多次循環!
while循環是根據while關鍵字後面指定的條件決定是否退出的循環的。
如果你希望執行一次命令就退出,那麼無需用while循環,使用while就表示你需要多次循環,好了,我猜測下,你的問題是希望true的條件下,如何退出循環吧?
如果是的話,那麼大概有如下幾個方法。
1、while後的條件不是為true永遠為真,而是指定一個條件,那麼條件不滿足就退出了。
例子如下:
i=0 while ((i<10)) do echo $i ((i++)) sleep 1 done
提示:
1)上述腳本執行10次循環,,即10秒後i就不會小於10了,因此循環自動退出。
2)上述腳本你可以直接命令行拷貝執行看效果。
2、還可以利用第一部分SHELL視頻裡的特殊變量$$來記錄腳本進程的ID到固定文件裡,希望退出時就讀取文件裡的腳本進程ID kill殺掉這個ID即可。例子如下:
[root@C58 ~]# cat w.sh #!/bin/sh i=0 echo "$$" >/var/run/shell.pid while true do echo $i ((i++)) sleep 1 [ $i -eq 3 ] && kill `cat /var/run/shell.pid` done [root@C58 ~]# sh w.sh 0 1 2 Terminated
提示:這裡設置變量等於3就殺掉腳本進程。
3、其他方法
可以手動查找PID kill PIDNO.
或者查找進程名 pkill PROCESSNAME
當然還有killall等命令可以使用。
另,有問題可以到答疑區發問。
本文出自 “老男孩linux運維” 博客,請務必保留此出處http://oldboy.blog.51cto.com/2561410/1294926