Shell教程(四):条件语句、循环语句、break/continue
在编写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相关推荐
- 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】
⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...
- shell脚本中用到的条件和循环语句
本博文介绍一下shell脚本中常用的条件和循环语句: 条件语句: 循环语句: 示例: if语句: eg1. eg2. 2.case语句: 简单的case语句: 配合循环的case语句: 3.for语句 ...
- python赋值布尔变量_python基础 - 变量、布尔值、运算符、条件及循环语句
文章目录 一.变量 变量包括数字,字母,下划线,且不能以数字开头: python可以同时为多个变量赋值,如a,b = 1,2 ; c,d = 5,"hh": 一个变量可以通过赋值指 ...
- python之条件、循环语句
其实,很多语言的语法都是相通的,包括初学python一样. 今天要说的是条件.循环语句.这部分也是相对比较简单的,就python而言,只是书写方式稍作改动罢了. 1.条件语句 (1)格式: if 判断 ...
- 前端之JS条件、循环语句
前端之JS代码块 条件语句 -- 做选择 if--else-- 语法: 条件运算符 switch 三元运算符 网页主题选择 循环语句 for 和 break while 和 continue 函数部分 ...
- Python基础学习(二)-条件,循环语句
Python基础学习(二)-条件,循环语句 一,条件语句 1,if else if 判断条件: 执行语句... e ...
- VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略
VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...
- Java判断语句 循环语句
主题: 判断语句 循环语句 一.判断语句 1.单分支 1 if(条件){ 2 3 //此处插入代码,表示if中的条件成立执行的语句 4 } 注意: 1.条件 必须 boolean 2.if只带 一行代 ...
- Python基础教程(四):循环语句
Python 循环语句 本章节将向大家介绍Python的循环语句,程序在一般情况下是按顺序执行的. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许我们执行一个语句或语句组多次,下面是 ...
- Python基础教程笔记——条件,循环和其他语句
条件,循环和其他语句 Table of Contents 1 print和import的更多信息 1.1 使用逗号输出 1.2 把一些东东作为另一些东东导入 2 赋值魔法 2.1 序列解包 2.2 链 ...
最新文章
- 是财富自由的声音,蚂蚁上市前,取消了周报
- [javaSE] java获取文件列表
- Android 支付宝登录
- C/C++:mongoose.c实现多表单域文件上传
- Makefile之自动生成依赖(8)
- (一)人工智能与机器语言翻译简介
- Linq To Sql, 为何继承就这么费劲?
- Ajax同步链接在IE 与FireFox的使用差别 open(GET,url,false)
- ExcelApplication相关资料
- bzoj3713: [PA2014]Iloczyn(乱搞)
- string.format的使用与及转义
- 路由与交换技术(笔记)
- java对人脸打马赛克,如何给视频中的人脸进行马赛克 视频人脸打马赛克软件|人脸跟踪马赛克...
- 51单片机之实时秒表
- bochs镜像java模拟器_bochs WIN7 IMG镜像文件
- 游戏经济系统——体系设计
- python绘制条形图的方法_python绘制条形图方法代码详解
- [附源码]Nodejs计算机毕业设计基于java学科竞赛管理系统Express(程序+LW)
- CSP-S 2022游记
- 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----爬取第二步
热门文章
- ICML论文|这违反直觉的“升噪”方法,反而能很好的解决激活函数梯度弥散的问题
- 关于催收那些事儿(下)
- elementui表格复制_Element-UI中关于table表格的那些骚操作
- Java 8 - 04 类型检查、类型推断以及限制
- oracle集群 节点切换不,Oracle 11gR2 RAC集群单节点关闭开启
- oracle测试表什么名字,Oracle_PLSQL测试题与答案(绝对经典)
- 基于多线程队列简单实现mq
- java.lang.Math
- 深入理解ROS技术 【1】ROS下的模块详解(1-65)
- 机器学习系列1:单变量线性回归