linux 用while循环求和,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 <.>

echo $sum

[root@centos6-kvm3 scripts]# sh 10-05.sh

1380681

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值