码迷,mamicode.com
首页 > 系统相关 > 详细

shell中的循环语法

时间:2017-10-17 01:12:23      阅读:359      评论:0      收藏:0      [点我收藏+]

标签:back   stdin   ack   code   backup   use   表达   格式   sed   

                               shell中的循环语法

                                                          作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.for循环
1.语法格式1
1 for 变量 in 值1 值2 值3 ...
2 do
3   源代码
4 done
 
2.语法格式2
1 for (( 初始值;循环控制条件;变量变化 ))
2 do
3   源代码
4 done

 

3.案例展示一
 1 [root@yinzhengjie backup]# more for1.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:y1053419035@qq.com
 6 
 7 for i in 1 2 3
 8     do
 9         echo "第$i次循环!"
10 done
11 [root@yinzhengjie backup]# 

 

4.案例展示二(求和运算)
 1 [root@yinzhengjie backup]# more for3.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:y1053419035@qq.com
 6 
 7 sum=0
 8 read -t 30 -p "Please enter the start number>>>" StartNumber
 9 read -t 30 -p "Please enter an end number>>>" EndNumber
10 
11 for ((i=$StartNumber;i<=$EndNumber;i=i+1))
12     do
13         sum=$(($sum+$i))
14 done
15 
16 echo "从$StartNumber加到$EndNumber的总和是:$sum"
17 [root@yinzhengjie backup]# 
 
5.案例展示三(批量添加用户)
 1 [root@yinzhengjie backup]# more useradd.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 read -p "Please input username(default "yinzhengjie"):" -t 30 username
 9 read -p "Please input the number of users:" -t 30 UsersNumber
10 read -p "Please input the password of users:" -t 30 password
11 
12 if [ -z $username ]
13     then
14         username=yinzhengjie
15 fi
16 
17 
18 if [ ! -z "$username" -a ! -z "$UsersNumber" -a ! -z "$password" ]
19     then
20         y=$(echo $UsersNumber|sed s/[0-9]//g)
21         if [ -z "$y" ]
22             then
23                 for (( i=1;i<=$UsersNumber;i=i+1 ))
24                     do
25                         useradd "$username$i" &>/dev/null
26                         echo $password | passwd --stdin "$username$i" &> /dev/null
27                 done
28        fi
29 fi
30 
31 [root@yinzhengjie backup]# 

 

二.while循环
  while循环是不定循环,也称做条件循环。只要条件判断式成立,循环就会一直继续。只要条件判断式不成立,循环才会停止。这就和for的固定循环不太一样了。
1.语法格式
1 while [ 条件判断式 ]
2 do
3     源代码
4 done

 

 
2.案例展示
 1 [root@yinzhengjie shell]# more while.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:y1053419035@qq.com
 6 
 7 sum=0
 8 read -t 30 -p "Please enter the start number>>>" StartNumber
 9 read -t 30 -p "Please enter an end number>>>" EndNumber
10 
11 while [ $StartNumber -le $EndNumber ]
12     do
13         sum=$(( $sum + $StartNumber ))
14         StartNumber=$(( $StartNumber + 1 ))
15 done
16 
17 StartNumber=$(( $StartNumber - $EndNumber ))
18 
19 echo "从$StartNumber加到$EndNumber的总和是:$sum"
20 [root@yinzhengjie shell]# 

 

 
三.until循环
  until循环,和while循环相反,until循环时,只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。
1.语法格式
1 until [ 条件表达式 ]
2 do
3     源代码
4 done

 

2.案例展示
 1 [root@yinzhengjie shell]# more until.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:y1053419035@qq.com
 6 
 7 sum=0
 8 read -t 30 -p "Please enter the start number>>>" StartNumber
 9 read -t 30 -p "Please enter an end number>>>" EndNumber
10 
11 until [ $StartNumber -gt $EndNumber ]
12     do
13         sum=$(( $sum + $StartNumber ))
14         StartNumber=$(( $StartNumber + 1 ))
15 done
16 
17 StartNumber=$(( $StartNumber - $EndNumber ))
18 
19 echo "从$StartNumber加到$EndNumber的总和是:$sum"
20 [root@yinzhengjie shell]# 

 

 

shell中的循环语法

标签:back   stdin   ack   code   backup   use   表达   格式   sed   

原文地址:http://www.cnblogs.com/yinzhengjie/p/7679640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!