一、for 循环

1、语法:for 变量名in条件;do...;done

计算1到100的和

#!/bin/bash
sum=0
for i in {1..100}              #表示1到100          
do
sum=$[$sum+$i]
echo $sum
done 

2、文件列表循环

#!/bin/bash
cd /etc/
for i in `ls /etc/`
do
# [ -d $i ] && ls $i        #等同于下面的if语句
if [ -d $i ]
then
echo $i
ls $i
fi
done

3、for 循环一个目录时,是以空格为区分的。需要注意。

[root@localhost test]# for i in `ls ./`;do echo $i;done
1
2
3
4.txt
[root@localhost test]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 4月 19 21:36 1
-rw-r--r--. 1 root root 0 4月 19 21:36 2
-rw-r--r--. 1 root root 0 4月 19 21:36 3 4.txt

二、while 循环

1、语法: while条件;do...,done

检查系统负载

#!/bin/bash
while:                                          while 1, while true     #表示真,为死循环
do
load=`w |head -n1 |awk -F 'load average: ' '{print $2}' |cut -d. -f1 |sed 's/ //'`    #首先w 命令, 然后 awk 以 load average: 为分隔符,抓取$2 ,cut 以. 为分隔符,获取第一个字符,
if [ $load -gt 10 ]                                                                                              #sed 删除空格
then
/usr/local/sbin/mail.py ****@163.com "load high" "$load"
fi
sleep 30
done

[root@localhost test]# sh -x 1.sh
+ true
++ head -n1
++ awk -F 'load average: ' '{print $2}'
++ cut -d. -f1
++ w
+ load=0
+ '[' 0 -gt 10 ']'
+ sleep 30

2、while 循环  交互、

#!/bin/bash
while :
do
read -p "please input a number: " n
if [ -z "$n" ]
then
echo "please again input a number"
continue                                                                 #continue  继续之前的操作,及输入数字
fi
n1=`echo $n|sed 's/[0-9]//'`                                    #删除数字,判断n1 是否为纯数字
if [ -n  "$n1" ]
then
"echo you only input a number"
continue
fi
break                                                                   #如果结果是真,则跳出当前循环
done
echo $n

[root@localhost test]# sh -x 2.sh
+ :
+ read -p 'please input a number: ' n
please input a number: 2w
+ '[' -z 2w ']'
++ echo 2w
++ sed 's/[0-9]//g'
+ n1=w
+ '[' -n w ']'
+ echo 'you only input a number'
you only input a number
+ continue
+ :
+ read -p 'please input a number: ' n
please input a number: 2
+ '[' -z 2 ']'
++ echo 2
++ sed 's/[0-9]//g'
+ n1=
+ '[' -n '' ']'
+ break
+ echo 2
2

三、break 跳出循环

1、案例

#!/bin/bash
for i in `seq 5`
do
echo $i
if [ $i == 3 ]
then
break                                              #break 条件成立,结果为真,则结束当前的for循环,后面的显示命令还继续执行
fi
echo $i
done
echo ok

[root@localhost test]# sh 3.sh
1
1
2
2
3

OK

四、continue 结束本次循环

1、案例

#!/bin/bash
for i in `seq 5`
do
echo $i
if [ $i == 3 ]
then
continue                         #只是结束本次循环,其他循环还要继续
fi
echo $i
done

[root@localhost test]# sh 3.sh
1
1
2
2
3
4
4
5
5

五、exit  退出整个脚本

1、案例

#!/bin/bash
for i in `seq 5`
do
echo $i
if [ $i == 3 ]
then
exit                                                    #直接退出整个脚本
fi
echo $i
done
echo OK

[root@localhost test]# sh 3.sh
1
1
2
2
3
[root@localhost test]# echo $?
2

 

posted on 2018-04-19 22:33  天梭  阅读(119)  评论(0编辑  收藏  举报