標籤:
例1: 運行指令碼後會自動載入firefox瀏覽器,並開啟指定網頁。如果使用者關閉firefox,指令碼會再次自動重新開啟firefox。
如需結束迴圈,中止t2.sh進程即可。注意不要同時執行兩個t1.sh指令碼,否則……
若事先不知道指令碼名,也可以通過類似於"pstree | grep firefox"的命令獲知其進程樹,找到其父進程名killall掉即可。
或者使用類似於"ps -elf | grep firefox | grep -v grep| awk ‘{print $5}‘"的命令,尋找firefox相關進程的父進程pid,選最小的一個幹掉。 檔案名稱:t1.sh
測試方式:執行sh t1.sh &
檔案內容:
#!/bin/bash
while true
do
/usr/bin/firefox http://www.baidu.com
wait
done ###########################################################################
例2: 運行指令碼後會檢查、校正eth0網卡的IP設定等參數,並檢查web程式(80連接埠)是否正常監聽,否則自動載入預設的httpd服務。以後每隔5分鐘檢查一次。
檔案名稱:t2.sh
測試方式:sh t2.sh &
檔案內容:
#!/bin/bash
while true
do
NOWIP=`/sbin/ifconfig eth0 | grep ‘inet addr‘ | cut -d : -f2 | awk ‘{print $1}‘`
if [ $NOWIP != ‘192.168.2.20‘ ] ; then
/sbin/ifconfig eth0 192.168.2.20/24
/sbin/ifconfig eth0 up
/sbin/route add default gw 192.168.2.1
echo -e ‘nameserver 192.168.2.1\nnameserver 202.106.0.20‘ > /etc/resolv.conf
fi
PNUM=`netstat -anptl | grep :80 | wc -l`
if [ $PNUM -eq 0 ] ; then
/etc/init.d/httpd start
fi
sleep 5m
done
補充:
while語句
文法:
while 命令/條件
do
語句
done
機制:如果while後的命令執行成功,或條件真,則執行do和done之間的語句,執行完成後,再次判斷while後的命令和條件;如果while後的命令執行失敗,或條件為假,迴圈結束
例如:
while date
do
echo “aa”
done
特例:無條件迴圈
while true
do
語句
done
while可以用作無窮迴圈,很多地方都用到無窮迴圈。一個無窮迴圈如下所示:
while(true) {
迴圈內容;
...
}
無窮迴圈可以由自己迴圈中的某個條件式來結束。下面是一個迴圈內部終止的例子:
while(true) {
語句;
if(條件式)
break; // 跳離迴圈
...
}
http://www.cublog.cn/u1/40349/showart_392705.html
http://wanghai.blog.51cto.com/770518/160642
http://edu.codepub.com/2009/0531/5100.php
shell 死迴圈