Shell编程进阶1.8-1.9

回复 收藏
for循环
       for循环的基本结构:
       for变量名 in 循环条件; do
              command
       done
       例如:
              forb in `seq 1 5`; do
                     echo$b
              done
       执行结果:打印出1~5这个序列
这里的循环条件可以写成一组字符串或者数字(用1个或多个空格隔开),也可以是一条命令的执行结果
例如:
       for aa in 1 2 3 a b; do
              echo $aa
       done
也可以应用系统命令的执行结果,但是需要用反引号引起来:
       for file in `ls`; do
              echo $file
       done
计算1~10的和:
表示1~10的序列除了seq 1 10外还可以用{1..10}表示
       #!/bin/bash
       sum=0
       for i in {1..10}
       do
              sum=$[$sum+$i]
       done
       echo $sum
while循环
       while循环常常用来写死循环脚本,用来监控某项服务。
       while循环的格式也很简单:
              while条件; do
                     command
              done
       例如:
              #!/bin/bash
              a=5
              while[ $a -ge 1 ]; do
                     echo$a
                     a=$[$a-1]
              done
另外你可以把循环条件那一个冒号代替,这样可以做到死循环,常常这样写监控脚本。下面我们用while死循环来写一个判断系统负载的脚本。
       #!/bin/bash
       while :; do
              load=`uptime |awk '{print $(NF-2)}'|cut-d. -f1`
              if [ $load -gt 10 ]
              then
                     echo "system load ishigh."|mail -s "system load" aming@139.com
              fi
              sleep 10
       done
uptime命令是用来查看系统负载的,我们用awk截取倒数第三段,也就是平均1分钟的系统负载。如果高于10则发邮件告警,每隔10s检查一次。但是如果负载一直高于10就会出现每隔10s发一次邮件告警,如何避免这种情况的发生,后面会介绍。

2016-06-05 20:28 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: