shell 死循环
例1: 运行脚本后会自动加载firefox浏览器,并打开指定网页。如果用户关闭firefox,脚本会再次自动重新打开firefox。
如需结束循环,中止t2.sh进程即可。注意不要同时执行两个t1.sh脚本,否则……
若事先不知道脚本名,也可以通过类似于"pstree | grep firefox"的命令获知其进程树,找到其父进程名killall掉即可。
或者使用类似于"ps -elf | grep firefox | grep -v grep| awk '{print $5}'"的命令,查找firefox相关进程的父进程pid,选最小的一个干掉。
如需结束循环,中止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
测试方式:执行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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人