例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