shell中的循环语句

在我们平时使用C/C++编程中循环无疑是for和while,二者结束的标志是break,continue是二者结束本轮函数进入下一论循环的开关,但是在shell里除了for和while还有一个until,情况分析有case语句,但是和C/C++中完全不一样,在代码中有详细的标注:

  1 #!/bin/bash                                                                                                                           
  2 
  3 #程序猿帝
  4 #antony
  5 echo "for循环展示:"
  6 for loop in 1 2 3 4 5
  7 do echo "  value is :$loop"
  8 done
  9 
 10 for str in "hello " 'world!'
 11 do echo "str= $str"
 12 done
 13 
 14 for ((i=0; i<5; i++))
 15 do 
 16 echo $i
 17 done
 18 echo "while 循环展示:"
 19 i=1
 20 while(( $i<=5 ))
 21 do 
 22 echo "i = "$i
 23 let "i++"
 24 done
 25 echo '按下Ctrl+D退出'
 26 echo '输入你喜欢的数字'
 27 while read a
 28 do
 29 echo "你喜欢的数字:> $a"
 30 done
 31 
 32 echo 'case 使用展示:'
 33 echo '输入1到4之间的数字:'
 34 echo '你输入的数字为:'
 35 read a
 36 case $a in  #case取值后判断必须加in
 37 1) echo '你选择了1'
 38 ;;#两个封号代表这break
 39 2) echo '你选择了2'
 40 ;;
 41 3) echo '你选择了3'
 42 ;;
 43 4) echo '你选择了4'
 44 ;;
 45 *) echo '你没有输入1到4之间的数' # *) 代表了default
 46 ;;
 47 esac #case的结束标志,讲case返过来显示
 48 
 49 #break和continue的区别使用
 50 while :
 51 do 
 52 echo -n '输入1到5之间的数字:'  #-n 代表了连着输出不换行
 53 read a
 54 case $a in
 55 1|2|3|4|5) echo "你输入的数字是 $a"  # |用或的方式,讲所有所有选项一次性将所有选项搞定
 56 ;;
 57 *) echo "你输入的数字不是1到5之间的!break"
 58 break #直接跳出循环
 59 ;;
 60 esac
 61 done
 62 
 63 while : 
 64 do
 65 echo -n "请输入1到5之间的数字:"
 66 read a
 67 case $a in
 68 1|2|3|4|5) echo "你输入的是:$a"
 69 ;;
 70 *) echo "你输入的不是1到5之间的数,continue"
 71 continue #结束本次循环进入下次循环
 72 echo "游戏结束" #不会被输出
 73 ;;
 74 esac
 75 done
 76         

运行结果:
这里写图片描述
这里写图片描述
通过for循环的三种模式的编写和运行可以看得出字符串和数字的循环模式,while模式也有体现,想说的是case和while的结合以及最后的停止循环,break是立即停止循环,continue只是停止了当前循环进入到下一轮循环,最后通过Ctrl+c停止循环接触进程。使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量,具体查看:http://www.runoob.com/linux/linux-comm-let.html
until循环:
这里写图片描述
执行结果:
这里写图片描述
until循环执行一系列命令直至条件为真时停止。
until循环与while循环在处理方式上刚好相反。
一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。
死循环这里也展示一下:
这里写图片描述
这三者不管执行那个都会出现死循环:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/magiclyj/article/details/77923588