for循环及while循环

朴灿烈づ我的快乐病毒、 2022-05-20 07:27 459阅读 0赞

常见的循环有:for循环和while循环

1.for循环

for循环的基本格式如下:

  1. for 变量名 in 循环的条件;do
  2. command
  3. done

“循环的条件”可以是一组字符串或者一组数字,也可以是一条命令的执行结果。

这个脚本是计算0-100的和;

  1. [root@yuioplv sbin]# vim for1.sh
  2. #!/bin/bash
  3. sum=0 #sum初始值为0
  4. for i in `seq 1 100` #定义循环的区间
  5. do
  6. sum=$[$sum+$i] #每循环一次,将sum+i的值再赋给sum
  7. done
  8. echo $sum
  9. [root@yuioplv sbin]# sh -x for1.sh
  10. + sum=0
  11. ++ seq 1 100
  12. + for i in '`seq 1 100`'
  13. + sum=1
  14. + for i in '`seq 1 100`'
  15. + sum=3
  16. + for i in '`seq 1 100`'
  17. + sum=6
  18. + for i in '`seq 1 100`'
  19. + sum=10
  20. + for i in '`seq 1 100`'
  21. + sum=15
  22. + for i in '`seq 1 100`'
  23. + sum=21
  24. + for i in '`seq 1 100`'
  25. + sum=28
  26. + for i in '`seq 1 100`'
  27. + sum=36
  28. + for i in '`seq 1 100`'
  29. + sum=45
  30. + for i in '`seq 1 100`'
  31. + sum=55
  32. + for i in '`seq 1 100`'
  33. + sum=66
  34. + for i in '`seq 1 100`'
  35. + sum=78
  36. + for i in '`seq 1 100`'
  37. + sum=91
  38. + for i in '`seq 1 100`'
  39. + sum=105
  40. + for i in '`seq 1 100`'
  41. + sum=120
  42. + for i in '`seq 1 100`'
  43. + sum=136
  44. + for i in '`seq 1 100`'
  45. + sum=153
  46. + for i in '`seq 1 100`'
  47. + sum=171
  48. + for i in '`seq 1 100`'
  49. + sum=190
  50. + for i in '`seq 1 100`'
  51. + sum=210
  52. + for i in '`seq 1 100`'
  53. + sum=231
  54. + for i in '`seq 1 100`'
  55. + sum=253
  56. + for i in '`seq 1 100`'
  57. + sum=276
  58. + for i in '`seq 1 100`'
  59. + sum=300
  60. + for i in '`seq 1 100`'
  61. + sum=325
  62. + for i in '`seq 1 100`'
  63. + sum=351
  64. + for i in '`seq 1 100`'
  65. + sum=378
  66. + for i in '`seq 1 100`'
  67. + sum=406
  68. + for i in '`seq 1 100`'
  69. + sum=435
  70. + for i in '`seq 1 100`'
  71. + sum=465
  72. + for i in '`seq 1 100`'
  73. + sum=496
  74. + for i in '`seq 1 100`'
  75. + sum=528
  76. + for i in '`seq 1 100`'
  77. + sum=561
  78. + for i in '`seq 1 100`'
  79. + sum=595
  80. + for i in '`seq 1 100`'
  81. + sum=630
  82. + for i in '`seq 1 100`'
  83. + sum=666
  84. + for i in '`seq 1 100`'
  85. + sum=703
  86. + for i in '`seq 1 100`'
  87. + sum=741
  88. + for i in '`seq 1 100`'
  89. + sum=780
  90. + for i in '`seq 1 100`'
  91. + sum=820
  92. + for i in '`seq 1 100`'
  93. + sum=861
  94. + for i in '`seq 1 100`'
  95. + sum=903
  96. + for i in '`seq 1 100`'
  97. + sum=946
  98. + for i in '`seq 1 100`'
  99. + sum=990
  100. + for i in '`seq 1 100`'
  101. + sum=1035
  102. + for i in '`seq 1 100`'
  103. + sum=1081
  104. + for i in '`seq 1 100`'
  105. + sum=1128
  106. + for i in '`seq 1 100`'
  107. + sum=1176
  108. + for i in '`seq 1 100`'
  109. + sum=1225
  110. + for i in '`seq 1 100`'
  111. + sum=1275
  112. + for i in '`seq 1 100`'
  113. + sum=1326
  114. + for i in '`seq 1 100`'
  115. + sum=1378
  116. + for i in '`seq 1 100`'
  117. + sum=1431
  118. + for i in '`seq 1 100`'
  119. + sum=1485
  120. + for i in '`seq 1 100`'
  121. + sum=1540
  122. + for i in '`seq 1 100`'
  123. + sum=1596
  124. + for i in '`seq 1 100`'
  125. + sum=1653
  126. + for i in '`seq 1 100`'
  127. + sum=1711
  128. + for i in '`seq 1 100`'
  129. + sum=1770
  130. + for i in '`seq 1 100`'
  131. + sum=1830
  132. + for i in '`seq 1 100`'
  133. + sum=1891
  134. + for i in '`seq 1 100`'
  135. + sum=1953
  136. + for i in '`seq 1 100`'
  137. + sum=2016
  138. + for i in '`seq 1 100`'
  139. + sum=2080
  140. + for i in '`seq 1 100`'
  141. + sum=2145
  142. + for i in '`seq 1 100`'
  143. + sum=2211
  144. + for i in '`seq 1 100`'
  145. + sum=2278
  146. + for i in '`seq 1 100`'
  147. + sum=2346
  148. + for i in '`seq 1 100`'
  149. + sum=2415
  150. + for i in '`seq 1 100`'
  151. + sum=2485
  152. + for i in '`seq 1 100`'
  153. + sum=2556
  154. + for i in '`seq 1 100`'
  155. + sum=2628
  156. + for i in '`seq 1 100`'
  157. + sum=2701
  158. + for i in '`seq 1 100`'
  159. + sum=2775
  160. + for i in '`seq 1 100`'
  161. + sum=2850
  162. + for i in '`seq 1 100`'
  163. + sum=2926
  164. + for i in '`seq 1 100`'
  165. + sum=3003
  166. + for i in '`seq 1 100`'
  167. + sum=3081
  168. + for i in '`seq 1 100`'
  169. + sum=3160
  170. + for i in '`seq 1 100`'
  171. + sum=3240
  172. + for i in '`seq 1 100`'
  173. + sum=3321
  174. + for i in '`seq 1 100`'
  175. + sum=3403
  176. + for i in '`seq 1 100`'
  177. + sum=3486
  178. + for i in '`seq 1 100`'
  179. + sum=3570
  180. + for i in '`seq 1 100`'
  181. + sum=3655
  182. + for i in '`seq 1 100`'
  183. + sum=3741
  184. + for i in '`seq 1 100`'
  185. + sum=3828
  186. + for i in '`seq 1 100`'
  187. + sum=3916
  188. + for i in '`seq 1 100`'
  189. + sum=4005
  190. + for i in '`seq 1 100`'
  191. + sum=4095
  192. + for i in '`seq 1 100`'
  193. + sum=4186
  194. + for i in '`seq 1 100`'
  195. + sum=4278
  196. + for i in '`seq 1 100`'
  197. + sum=4371
  198. + for i in '`seq 1 100`'
  199. + sum=4465
  200. + for i in '`seq 1 100`'
  201. + sum=4560
  202. + for i in '`seq 1 100`'
  203. + sum=4656
  204. + for i in '`seq 1 100`'
  205. + sum=4753
  206. + for i in '`seq 1 100`'
  207. + sum=4851
  208. + for i in '`seq 1 100`'
  209. + sum=4950
  210. + for i in '`seq 1 100`'
  211. + sum=5050
  212. + echo 5050
  213. 5050

这个脚本是列出/usr/local/sbin目录下.sh结尾的文件;

  1. [root@yuioplv sbin]# vim for2.sh
  2. #! /bin/bash
  3. cd /usr/local/sbin
  4. for a in `ls ./*.sh`
  5. do
  6. [ -f $a ] && ls $a
  7. done
  8. [root@yuioplv sbin]# sh for2.sh
  9. ./for1.sh
  10. ./for2.sh

2.while循环

while循环的基本格式如下:

  1. while 条件;do
  2. command
  3. done

这个脚本是判断系统负载大于10时就通过/usr/loacl/sbin/mail.py脚本来发送告警邮件;

  1. [root@yuioplv sbin]# vim while1.sh
  2. #!/bin/bash
  3. while true
  4. do
  5. load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1` #将1分钟内系统的平均负载值赋值给load
  6. if [ $load -gt 10 ]
  7. then
  8. /usr/loacl/sbin/mail.py "load high" "$load"
  9. fi
  10. sleep 30 #延时30s
  11. done
  12. [root@yuioplv sbin]# sh -x while1.sh
  13. + true
  14. ++ head -1
  15. ++ awk -F 'load average: ' '{print $2}'
  16. ++ cut -d. -f1
  17. ++ w
  18. + load=0
  19. + '[' 0 -gt 10 ']'
  20. + sleep 30

这个脚本是判断用户的内容,若是数字,则将输入的数字打印出来;

  1. [root@yuioplv sbin]# vim while2.sh
  2. #!/bin/bash
  3. while :
  4. do
  5. read -p "请输入一个数字: " n
  6. if [ -z "$n" ] #输入内容为空,则继续循环
  7. then
  8. echo "请先输入内容."
  9. continue
  10. fi
  11. n1=`echo $n|sed 's/[0-9]//g'` #将输入内容的数字清空,赋值给n1
  12. if [ -n "$n1" ] #判断n1不为空,继续循环
  13. then
  14. echo "你只能输入一个纯数字."
  15. continue
  16. fi
  17. break #输入数字,跳出循环
  18. done
  19. echo $n
  20. [root@yuioplv sbin]# sh while2.sh
  21. 请输入一个数字:
  22. 请先输入内容.
  23. 请输入一个数字: df
  24. 你只能输入一个纯数字.
  25. 请输入一个数字: 33
  26. 33

break:跳出循环

  1. [root@yuioplv sbin]# vim break.sh
  2. #!/bin/bash
  3. for i in `seq 1 5`
  4. do
  5. echo $i
  6. if [ $i -eq 3 ]
  7. then
  8. break #当i等于3时,跳出循环
  9. fi
  10. echo $i
  11. done
  12. echo aaa
  13. [root@yuioplv sbin]# sh -x break.sh
  14. ++ seq 1 5
  15. + for i in '`seq 1 5`'
  16. + echo 1
  17. 1
  18. + '[' 1 -eq 3 ']'
  19. + echo 1
  20. 1
  21. + for i in '`seq 1 5`'
  22. + echo 2
  23. 2
  24. + '[' 2 -eq 3 ']'
  25. + echo 2
  26. 2
  27. + for i in '`seq 1 5`'
  28. + echo 3
  29. 3
  30. + '[' 3 -eq 3 ']'
  31. + break
  32. + echo aaa
  33. aaa

continue:结束本次循环

  1. [root@yuioplv sbin]# vim continue.sh
  2. #!/bin/bash
  3. for i in `seq 1 5`
  4. do
  5. echo $i
  6. if [ $i -eq 3 ]
  7. then
  8. continue #当i等于3时,结束本次循环
  9. fi
  10. echo $i
  11. done
  12. echo aaa
  13. [root@yuioplv sbin]# sh continue.sh
  14. 1
  15. 1
  16. 2
  17. 2
  18. 3
  19. 4
  20. 4
  21. 5
  22. 5
  23. aaa

exit:直接退出脚本

  1. [root@yuioplv sbin]# vim exit.sh
  2. #!/bin/bash
  3. for i in `seq 1 5`
  4. do
  5. echo $i
  6. if [ $i -eq 3 ]
  7. then
  8. exit #当i等于3时,退出脚本
  9. fi
  10. echo $i
  11. done
  12. echo aaa
  13. [root@yuioplv sbin]# sh exit.sh
  14. 1
  15. 1
  16. 2
  17. 2
  18. 3

发表评论

表情:
评论列表 (有 0 条评论,459人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java - > for, while do.while循环

    为什么要用到循环结构: 按顺序结构执行程序语句(方法或者代码块)只能被执行一次。如果要多次执行,就需要使用到循环结构(循环结构是指在程序中需要反复执行某个功能而设置的一种程序