shell编程之控制结构(二) ———循环结构

  • while 语句
    while循环的用法如下:

      while condition
         do
            statements
         done
    

    condition表示判断条件,statements表示要执行的语句,do和done都是shell中的关键字
    while语句和if语句中的条件判断用法是一样的,可以使用test或 [ ] 命令,也可以使用(())
    下列使计算从1加到100的和:

      #! /bin/bash
      i=1
      sum=0
      while [ " $i " -le 100 ]
      	do
      		((sum += i))
      		((i++))
      	done
      	echo "The sum is: $sum"
    

    运行结果:

      The sum is:5050
    
  • until语句
    until循环和while循环恰好相反,当判断条件不成立时才进行循环,一旦判断条件成立,则终止循环
    until循环的用法如下:

      until condition
      	do
      		statements
      	done
    

    下列求从1加到100的值:

      #!/bin/bash
      i=1
      sum=0
      until ((i>100))
      do
      	((sum += i))
      	((i++))
      done
      echo "The sum is: $sum"
    
  • for语句
    for循环有两种使用形式,一种是算术表达式方式,另一种是值表方式
    用法如下:

      for ((exp1;exp2;exp3))
      do
      	statements
      done
    

    exp1、exp2、exp3是3个表达式,其中exp2是判断条件,for循环根据exp2的结果来决定是否继续下一次循环。
    下列求从1加到100的和

      #! /bin/bash
      sum=0
      for ((i=1;i<100;i++))
      do
      	((sum+=i))
      done
      echo "The sum is: $sum"
    

    exp1、exp2、exp3都是可选项,都可以省略,但分号必须保留

    值表方式的for循环的用法如下:

      for variable in value_list
      do
      	statements
      done
    

    variable表示变量,value_list表示取值列表,in是shell中的关键字。每次循环都会从value_list中取一个值赋给变量variable,然后进入循环体,直到取完value_list中的所有值,循环结束。in value_list部分可以省略,省略后的效果相当于in $@ ( $ * ),变量依次取位置参数的值
    例如:

      #! /bin/bash
      sum=0
      for n in 1 2 3 4 5 6
      do
      	echo $n
      	((sum+=n))
      done
      echo "The sum is " $sum
    

    下面是缺省value_list的情况

      [root@ localhost ~]#cat ex
      #! /bin/bash
      	for str
      	do
      		echo $str
      	done
      [root@ localhost ~]# ./ex C++ Java Python C#
    

    运行结果:

      C++
      Java
      Python
      C#
    
  • select in 语句
    是shell独有的一种循环,适合终端这样的交互场景,该循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能
    用法如下:

      select variable in value_list
      do
      	statements
      done
    

    栗子🥔:

      #! /bin/bash
      echo "What is your favourite OS?"
      select name in "Linux" "Window" "Mac OS" "UNIX" "Android"
      do
      	echo "You have selected $name"
      done
    

    运行结果:

      What is your favourite OS?
      1)Linux
      2)Windows
      3)Mac OS
      4)UNIX
      5)Android
      #? 4↙
      You have selected UNIX
      #? 1↙
      You have selected Linux
      #? 9↙
      You have selected
      #? 2↙
      You have selected Windows
      #? ^D
    

    #?用来提示用户输入菜单编号;^D表示按下Ctrl+D组合键,它的作用是结束select in循环。
    select语句取值列表value_list中的内容会以菜单的形式显示出来,用户输入菜单编号,则表示选中某个值,这个值就会赋给变量variable,然后再执行循环体中的statements部分。每次循环时select都会要求用户输入菜单编号,并使用环境变量PS3的值作为提示符,PS3的默认值为#?,修改PS3的值就可以修改提示符。若用户输入的菜单编号不在范围之内,例如上面输入的9,就会给variable赋一个空值;如果用户输入一个空值(什么也不输入,直接回车),则会重新显示一遍菜单。
    select是无限循环,只有遇到break语句,或按下Ctrl+D组合键才能结束
    select in可以和case in一起使用:

#! /bin/bash
	echo "What is your favourite OS?"
	select name in "Linux" "Mac OS" "UNIX" "Android"
	do
		case $name in
			"Linux")
				echo "Linux是一个类UNIX操作系统,它开源免费。"
				break;;
			"Windows")
				echo "Windows是微软开发的个人计算机操作系统。它是闭源收费的。"
				break;;
			"Mac OS")
				echo "Mac OS是苹果公司基于UNIX开发的一款图形界面操作系统。"
				break;;
			"UNIX")
				echo "UNIX是操作系统的开山鼻祖。"
				break;;
			"Android")
				echo "Android是由Google开发的手机操作系统。"
				break;;
			*)
				echo "输入错误,请重新输入"
		esac
	done

注:上文均出自计算机三级《Linux应用与开发技术》,本人在学习想要记录一下😊

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值