shell脚本之十:while循环及应用实践
2020-04-29 16:04:35来源:博客园 阅读 ()
shell脚本之十:while循环及应用实践
十、while循环及应用实践
(一)while循环语法
while 循环语法:
while <条件表达式>
do
指令
done
(二)范例1:
每隔2s输出系统负载情况。
[root@centos6-kvm3 scripts]# cat 10-01.sh
#!/bin/bash
while true
do
uptime >>/tmp/oldboy.log
sleep 2
done
[root@centos6-kvm3 scripts]#
1、脚本执行的方法
用法 | 说明 |
---|---|
sh while1.sh & | 把脚本while1.sh放到后台执行(后台运行脚本时常用)* |
nohup while1.sh & | 使用nohup 把脚本while.sh放到后台执行。 |
ctl+c | 停止执行当前脚本或者任务 |
ctl+z | 暂停执行当前脚本或者任务 |
bg | 把当前脚本或者任务放到后台执行,bg可以理解为backround |
fg | 把当前脚本或者任务拿到前台执行,如果有多个任务,可以使用fg加任务编号调出对应脚本任务,如fg 2,调出第二个脚本任务,fg可以理解为frontground |
jobs | 查看当前执行的脚本或者任务 |
kill | 关闭执行的脚本任务,即以“kill %任务编号”的形式关闭脚本,这个任务标号,可以通过jobs获得。 |
后台运行 & ,nohup,screen(运维人员)
常用命令:
- kill,killall,pkill :杀掉进程
- ps:查看进程。
- pstree:显示进程状态树。
- top:显示进程。
- renice:改变优先权。
- nohup:用户退出系统之后继续工作。
- pgrep:查找匹配条件的进程。
- strace:跟踪一个进程的系统调用情况。
- ltrace:跟踪进程调用库函数的情况。
(三)范例2:
请使用while循环对下面的脚本进行修改,使得当执行脚本时,每次执行完脚本以后不退出脚本了,而是继续提示用户输入。
[root@centos6-kvm3 scripts]# cat 10-02.sh
#!/bin/bash
while true
do
read -t 15 -p "please input two number:" a b
expr $a + $b + 2 &>/dev/null
if [ $? -ne 0 ]
then
echo "usage:$0 please input two number."
continue
fi
if [ -z "$b" ]
then
echo "usage:$0 please input two number."
continue
fi
echo "a-b=$(($a-$b))"
echo "a+b=$(($a+$b))"
echo "a*b=$(($a*$b))"
echo "a/b=$(($a/$b))"
echo "a**b=$(($a**$b))"
echo "a%b=$(($a%$b))"
done
[root@centos6-kvm3 scripts]#
(四)范例3:
猜数字游戏。首先让系统随机生成一个数字,给这个数字定一个范围(1-60),让用户输入猜的数字,对输入进行判断,如果不符合要求,就给予高或低的提示,猜对后则给出猜对用的次数,请用while语句实现。
[root@centos6-kvm3 scripts]# cat 10-04.sh
#!/bin/bash
random=$((RANDOM%60))
count=0
while true
do
read -p "please input a num:" num
((count+=1))
if [ $random -lt $num ]
then
echo "你猜大了"
elif [ $random -gt $num ]
then
echo "你猜小了"
else
echo "你猜对了,NB!共计猜了${count}次!"
exit 1
fi
done
[root@centos6-kvm3 scripts]#
(五)范例4:
分析Apache访问日志(access_2010-12-8.log),把日志中每行的访问字节数对应字段数字相加,计算出总的访问量。
[root@centos6-kvm3 scripts]# cat 10-05.sh
#!/bin/bash
sum=0
awk '{print $10}' access_2010-12-8.log | grep -v - >./oldboy.log
while read line
do
((sum=sum+line))
done <./oldboy.log
echo $sum
[root@centos6-kvm3 scripts]# sh 10-05.sh
1380681
原文链接:https://www.cnblogs.com/cuiyongchao007/p/12804915.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- Linux指令和shell脚本 2020-06-11
- Xshell如何配置并远程连接Linux服务器详解 2020-05-31
- Ubuntu下用脚本执行sql语句(sqlite) 2020-05-29
- 如何将目录下的脚本一次性全部执行 2020-05-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash