在编写shell脚本,有可能是一种情况,当你需要采取一个路径两条路径。所以,需要利用条件语句,让程序作出正确的决策和执行正确的动作。

UNIX Shell支持条件语句,从而根据不同的条件下执行不同的操作。在这里,我们将解释以下两个决策语句:

·        if...else 语句

·        case...esac 条件语句

if...else 语句:

if else语句是有用的决策语句,可以用来从一个给定的选项中选择一个选项。

UNIX Shell支持以下形式的if.. else语句:

·        if...fi 语句

·        if...else...fi 语句

·        if...elif...else...fi 语句

大部分的 if 语句检查前面的章节中讨论的关系运算符的关系。

case...esac 语句:

if...elif 可以使用多个 elif  语句执行多分支。然而,这并不总是最佳的解决方案,尤其是当所有的分支依赖于一个单一的变量的值。

UNIX Shell支持 case...esac 语句处理正是由于这个情况,它这样做更有效地比 if...elif 语句。

目前只有一种形式的情况下,这里详细case...esac 语句:

·        case...esacstatement

UNIX shell 的 case...esac 语句,比较像其他编程语言里的 switch...case ,如C或C+ +和Perl等非常相似。

循环是一个强大的编程工具,使您能够重复执行一组命令。在本教程中,您将学习以下类型的循环Shell程序:

·        while 循环

·        for 循环

·        until 循环

·        select 循环

你会根据不同情况使用不同的循环。例如用 while 循环执行命令,直到给定的条件下是 ture ,循环直到执行到一个给定的条件为 false。

有良好的编程习惯,将开始使用情况的基础上适当的循环。这里while和for循环类似在大多数其他的编程语言,如C,C++ 和 Perl 等。

嵌套循环:

所有支持嵌套循环的概念,这意味着可以把一个循环内其他类似或不同的循环。这种嵌套可以去高达无限数量的时间根据需要。

嵌套的while循环和类似的方式,可以嵌套其他循环的基础上的编程要求下面是一个例子:

嵌套while循环:

作为另一个while循环的身体的一部分,这是可以使用一个while循环。

语法:

while command1 ; # this is loop1, the outer loop
do
   Statement(s) to be executed if command1 is true
 
   while command2 ; # this is loop2, the inner loop
   do
      Statement(s) to be executed if command2 is true
   done
 
   Statement(s) to be executed if command1 is true
done

例如:

这里是循环嵌套一个简单的例子,让我们添加另一个倒计时循环内的循环,数到九:

#!/bin/sh
 
a=0
while [ "$a" -lt 10 ]    # this is loop1
do
   b="$a"
   while [ "$b" -ge 0 ]  # this is loop2
   do
      echo -n "$b "
      b=`expr $b - 1`
   done
   echo
   a=`expr $a + 1`
done

这将产生以下结果。重要的是要注意 echo -n 是如何工作。在这里,-n选项echo ,以避免打印一个新行字符。

0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0

到目前为止,我们已经看到了,创建循环和使用循环来完成不同的任务。有时候,你需要停止循环或跳过循环迭代。

在本教程中,您将了解以下两个语句用于控制 Shell 循环:

1.  break 语句

2.  continue 语句

无限循环:

循环有限的生命,他们跳出来,一旦条件是 false 还是 false 取决于循环。

由于所需的条件是不符合一个循环可能永远持续下去。永远不会终止执行一个循环执行无限次数。出于这个原因,这样的循环被称为无限循环。

例子:

下面是一个简单的例子,使用while循环显示数字0到9:

#!/bin/sh
 
a=10
 
while [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

这个循环将永远持续下去,因为常是大于10,它永远不会成为小于10。所以这是无限循环真实的例子。

break语句:

break语句用于终止整个循环的执行,完成后所有行代码break语句的执行。然后,它逐级的代码跟在循环结束。

语法

将用于以下break语句退出循环:

break

将用于以下break语句退出循环:

break n

这里n指定的第n个封闭的循环退出。

例子:

下面是一个简单的例子展示了循环将终止只要一变为5:

#!/bin/sh
 
a=0
 
while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

这将产生以下结果:

0
1
2
3
4
5

下面是一个简单的嵌套循环的例子。这个脚本打破两个循环,如果的 var1 等于2 和 var2 等于0:

#!/bin/sh
 
for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

这将产生以下结果。内循环有一个 break 命令与参数2。这表明,如果条件得到满足应该跳出外循环,并最终从内循环跳出。

1 0
1 5

continue 语句:

continue语句break命令类似,但它会导致当前迭代的循环退出,而不是整个循环。

这种参数是有用的,当一个错误已经发生,但你想尝试执行下一个循环迭代。

语法

continue

和break语句一样,一个整数参数可以给continue命令跳过嵌套循环的命令。

continue n

这里n指定第n个封闭循环 continue 。

例子:

下面的循环利用continue语句返回,并开始处理下一个语句:

#!/bin/sh
 
NUMS="1 2 3 4 5 6 7"
 
for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

这将产生以下结果:

Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
from: http://www.yiibai.com/shell/what_is_shell.html#

Shell教程(四):条件语句、循环语句、break/continue相关推荐

  1. 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】

    ⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...

  2. shell脚本中用到的条件和循环语句

    本博文介绍一下shell脚本中常用的条件和循环语句: 条件语句: 循环语句: 示例: if语句: eg1. eg2. 2.case语句: 简单的case语句: 配合循环的case语句: 3.for语句 ...

  3. python赋值布尔变量_python基础 - 变量、布尔值、运算符、条件及循环语句

    文章目录 一.变量 变量包括数字,字母,下划线,且不能以数字开头: python可以同时为多个变量赋值,如a,b = 1,2 ; c,d = 5,"hh": 一个变量可以通过赋值指 ...

  4. python之条件、循环语句

    其实,很多语言的语法都是相通的,包括初学python一样. 今天要说的是条件.循环语句.这部分也是相对比较简单的,就python而言,只是书写方式稍作改动罢了. 1.条件语句 (1)格式: if 判断 ...

  5. 前端之JS条件、循环语句

    前端之JS代码块 条件语句 -- 做选择 if--else-- 语法: 条件运算符 switch 三元运算符 网页主题选择 循环语句 for 和 break while 和 continue 函数部分 ...

  6. Python基础学习(二)-条件,循环语句

    Python基础学习(二)-条件,循环语句     一,条件语句    1,if  else           if  判断条件:               执行语句...           e ...

  7. VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...

  8. Java判断语句 循环语句

    主题: 判断语句 循环语句 一.判断语句 1.单分支 1 if(条件){ 2 3 //此处插入代码,表示if中的条件成立执行的语句 4 } 注意: 1.条件 必须 boolean 2.if只带 一行代 ...

  9. Python基础教程(四):循环语句

    Python 循环语句 本章节将向大家介绍Python的循环语句,程序在一般情况下是按顺序执行的. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许我们执行一个语句或语句组多次,下面是 ...

  10. Python基础教程笔记——条件,循环和其他语句

    条件,循环和其他语句 Table of Contents 1 print和import的更多信息 1.1 使用逗号输出 1.2 把一些东东作为另一些东东导入 2 赋值魔法 2.1 序列解包 2.2 链 ...

最新文章

  1. 是财富自由的声音,蚂蚁上市前,取消了周报
  2. [javaSE] java获取文件列表
  3. Android 支付宝登录
  4. C/C++:mongoose.c实现多表单域文件上传
  5. Makefile之自动生成依赖(8)
  6. (一)人工智能与机器语言翻译简介
  7. Linq To Sql, 为何继承就这么费劲?
  8. Ajax同步链接在IE 与FireFox的使用差别 open(GET,url,false)
  9. ExcelApplication相关资料
  10. bzoj3713: [PA2014]Iloczyn(乱搞)
  11. string.format的使用与及转义
  12. 路由与交换技术(笔记)
  13. java对人脸打马赛克,如何给视频中的人脸进行马赛克 视频人脸打马赛克软件|人脸跟踪马赛克...
  14. 51单片机之实时秒表
  15. bochs镜像java模拟器_bochs WIN7 IMG镜像文件
  16. 游戏经济系统——体系设计
  17. python绘制条形图的方法_python绘制条形图方法代码详解
  18. [附源码]Nodejs计算机毕业设计基于java学科竞赛管理系统Express(程序+LW)
  19. CSP-S 2022游记
  20. 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----爬取第二步

热门文章

  1. ICML论文|这违反直觉的“升噪”方法,反而能很好的解决激活函数梯度弥散的问题
  2. 关于催收那些事儿(下)
  3. elementui表格复制_Element-UI中关于table表格的那些骚操作
  4. Java 8 - 04 类型检查、类型推断以及限制
  5. oracle集群 节点切换不,Oracle 11gR2 RAC集群单节点关闭开启
  6. oracle测试表什么名字,Oracle_PLSQL测试题与答案(绝对经典)
  7. 基于多线程队列简单实现mq
  8. java.lang.Math
  9. 深入理解ROS技术 【1】ROS下的模块详解(1-65)
  10. 机器学习系列1:单变量线性回归