哪些是Shell

Linux系统中,Shell是用户与系统内核之间进行交互的插口。

Shell这个词组的意思是“外壳”,它形象地抒发出了Shell的作用。在UNIX以及Linux中,Shell就是套在内核外边的一层壳体。正由于有Shell的存在,才向普通的用户隐藏了许多关于系统内核的细节。

Shell又称命令例程,它能辨识用户输入的各类命令,并传递给操作系统。它的作用类似于Windows操作系统中的命令行,然而,Shell的功能远比命令行强悍得多。在UNIX或则Linux中,Shell既是用户交互的界面,也是控制系统的脚本语言。

Shell的分类

关于Shell的分类,在介绍Shell的历史的时侯早已简单地介绍过一些了,下边对各类Shell程序做一个简单的概括。常见的几种Shell程序如下所述。

对于这种Shell程序,其句型或多或少都有所区别。目前大部份人一直建议使用标准的BourneAgainShell。

Shell不仅仅是充当用户与UNIX或则Linux交互界面的角色,还可以作为一种程序设计语言来使用。通过Shell编程,可以实现许多十分实用的功能,增强系统管理的手动化水平。

在linux上搭建Shell编程环境

因为Linux本身就会默认安装Shell脚本的运行环境,所以一般情况下,并不须要用户额外安装哪些软件

在同一台Linux里面会同时安装多个Shell,而且,这种Shell的句型会有所不同,所以,用户在编撰和执行Shell脚本的时侯一定要弄清楚当前使用的是哪种Shell。用户可以使用系统变量$SHELL来获取当前系统默认的Shell。

echo $SHELL

从前面的输出结果可以获知,当前系统默认的Shell为bash。

我们都是指定使用的Shell为/bin/sh。实际上,在Linux中,这是一个指向/bin/bash的符号链接,如下:

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

这意味着,虽然我们在程序手指定的类库为/bin/sh,然而实际上解释Shell脚本的是/bin/bash。

Shell作为一个软件包,其实也有版本,用户可以使用如下命令来查看bash的版本:

echo $BASH_VERSION

Shell怎样执行

Shell脚本程序有以下两种执行方法:

(1)用户可以依次输入一系列的命令,交互式地执行它们;

(2)用户也可以把所有的这种命令依照次序保存在一个文件中,之后将该文件作为一个程序来执行。

交互式程序

在命令行上直接输入命令来交互式地执行Shell脚本是一种特别简单的形式。尤其是在测试Shell程序的时侯,通过使用交互式方法,可以十分便捷地得到程序执行的结果。

例:在当前目录中查找文件名包含“xml”这3个字符的文件。假如找到的话,则在当前屏幕上复印下来。我们可以在Shell提示符前面依次输入下边的代码:

[root@linux~]# for filename in `ls .`
> do
> if echo "$filename" | grep "xml"
> then 
> echo "$filename"
> fi
> done
package.xml
package.xml
wbxml1.0.3
wbxml1.0.3
wbxml1.0.3.tgz
wbxml1.0.3.tgz

命令行直接执行功能相同:

forfilenamein`ls.`;doifecho“$filename”|grep“xml”;thenecho“$filename”;fi;done

创建脚本

对于一组须要时常重复执行的Shell句子来说,将它们保存在一个文件中来执行是一种十分明智的做法。我们一般称这些包含多个Shell句子的文件为Shell脚本,或则Shell脚本文件。脚本文件都是普通的文本文件,可以使用任何的文本编辑器查看或则更改Shell脚本文件。

#! /bin/sh
# for 循环开始
for  filename  in  `ls .`
do
    #如果文件名包含xml
    if  echo  "$filename" | grep "xml"; then
        #输出文件名
        echo  "$filename"
    fi
done

从里面的代码可以获知,Shell程序中的注释以“#”符号开始,仍然持续到该行的结束。请注意第一行#!/bin/sh,它是一种特殊方式的注释,其中,“#!”字符告诉系统同一行中紧随在它前面的那种参数是拿来执行本文件的程序。在这个事例中,/bin/sh是默认的Shell程序。当将脚本编辑完成以后,这个脚本还不能马上执行,把脚本设置为可执行。

Shell脚本的参数

从命令行传递给Shell脚本的参数又称为位置参数,这主要是由于Shell脚本会依照参数的位置来接收它们的值。在Shell脚本内部,用户可以通过一系列的系统变量来获取参数。这种变量的名称都是固定的,而且十分简单,只用1个字符表示,比如$0表示当前执行的脚本名称,$1表示传递给脚本的第1个参数等。

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

注:

由单冒号或则双冒号造成来的字符串作为一个参数进行传递,传递时会去除冒号。

对于包含空白字符或则其他的特殊字符的参数,须要使用单冒号或则双冒号进行传递。

变量$@可以以“参数1”“参数2”“参数3”……的方式返回所有的参数的值,因而,$@与“$1”“$2”“$3”……是等价的。假如用户传递的参数中包含空格或则其他的特殊字符,须要使用$@来获取所有的参数的值,不能使用$*。

变量$*以“参数1参数2参数3……”的方式将所有的参数作为一个字符串返回。一般情况下,参数值之间通过空格、制表符或则换行符来隔开,在默认情况下使用空格。

变量$#返回传递给脚本的参数的数目,不包括$0,即排除脚本的名称。

另外,假如用户传递的参数少于9个,则不能使用$10来引用第10个参数。为了才能获取第10个参数的值,用户必须处理或保存第1个参数,即$1,之后使用shift命令删掉参数1并将所有剩余的参数下移1位,此时$10就弄成了$9,依这种推。$#的值将被更新以反映参数的剩余数目。

参数扩充

用户须要编撰一个脚本程序,但是这个脚本程序须要一个拥有许多值得参数,在程序中,用户希望按照这个参数的值来执行不同的操作。在这些情况下,单纯地借助$1以及$2等变量早已不能满足需求了。此时,用户可以考虑使用参数扩充。

为了获取到那些参数的值,用户须要在Shell程序中使用getopts命令。

Shell脚本的基本元素

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

第2行,指定命令剖析器:“#!/bin/bash”。

第4行,注释:说明个别代码的功能。

第5行,可执行句子:实现程序的功能。

指定命令剖析器

一般会同时安装多个Shell程序,比如sh、bash或则csh等。而这种不同的Shell程序的句型会有些区别,这么究竟使用那个Shell来执行代码呢?

当用户在命令行中执行该程序时,当前的Shell会载入该程序的代码,但是读取其中的第2行,假如发觉有“#!”标识,则表示当前的程序指定了解释并执行它的Shell。之后会尝试读取“#!”标识前面的内容,搜救类库的绝对路径。假如发觉了指定的类库,则会创建一个关于该例程的进程,解释并执行当前脚本的句子。

Shell脚本的这个规定促使用户可以十分灵活地调用任何类库,而不仅仅限于Shell程序。下边介绍怎样在脚本文件手指定其他协程程序。

在PHP脚本文件手指定PHP语言的类库,之后执行文件中的PHP代码,代码如下:

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

Shell脚本中的注释和风格

通过在代码中降低注释可以提升程序的可读性。传统的Shell只支持单行注释,其表示方式是一个井号“#”,从该符号开始仍然到行尾都属于注释的内容,假如须要多行注释内容的话,则在每行注释的开头都要加上“#”。

然而这并不意味着用户只能使用单行注释。实际上,用户还可以通过其他一些变通的方式来实现多行注释,其中,最简单的方式就是使用逗号“:”配合heredocument,其句型如下:

:<<BLOCK
....注释内容
BLOCK

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

怎样执行Shell程序

可以通过3种方法来实现。这3种方法分别为:

关于第一种方式,上面早已详尽介绍过了,不再重复说明。第二种方法就是将脚本文件作为参数传递给类库,在通过这些方法执行脚本的时侯,不须要用户拥有执行该脚本文件的权限,只要拥有读取该文件的权限即可。

source命令是一个Shell内部命令,其功能是读取指定的Shell程序文件,但是依次执行其中所有的句子。

Shell程序的退出状态

在UNIX或则Linux中,每位命令就会返回一个退出状态码。退出状态码是一个整数,其有效范围为0~255。一般情况下,成功的命令返回0,而不成功的命令返回非0值。非0值一般都被解释成一个错误码。

同样,Shell脚本中的函数和脚本本身也会返回退出状态码。在脚本或则是脚本函数中执行的最后的命令会决定退出状态码。另外,用户也可以在脚本中使用exit句子将指定的退出状态码传递给Shell。

在上面的所有的反例中,我们都没有通过exit句子退出程序。在这些情况下,整个程序的退出状态码由最后执行的那一条句子来决定,另外,在Shell中,系统变量$?保存了最后一条命令的退出状态。

程序的退出状态十分重要,它反映了脚本的执行是否成功。用户可以按照脚本的执行状态来决定下一步的操作。

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

在前面的代码中,第4行是一个正常的echo句子,因而第6行的输出结果应当是0。第8行是一个无效的命令,因而第10行会输出一个非0值,具体是哪些值要看当前Shell的设置。第11行是一个正常的echo句子,同样该句子的退出状态也是0。第13行通过exit句子将退出状态码120返回给当前的Shell。

变量和引用变量的命令

在Shell中,变量名可以由字母、数字或则顿号组成,但是只能以字母或则顿号开头,大小写是敏感的。

变量的类型

按照变量类型确定的时间,可以将程序设计语言分为两类,分别是静态类型语言和动态类型语言。其中,静态类型语言是在程序的编译期间就确定变量类型的语言,比如Java、C++和PASCAL,在这种语言中使用变量时,必须首先申明其类型。动态设计语言是在程序执行过程中才确定变量的数据类型的语言。常见的动态语言有VBScript、PHP及Python等。在这种语言中,变量的数据类型按照第一次赋给该变量的值的数据类型来确定。

同样,依据是否强制要求类型定义,可以将程序设计语言分为强类型语言和弱类型语言。强类型语言要求用户在定义变量时必须明晰指定其数据类型,比如Java和C++。在强类型语言中,数据类型之间的转换特别重要。与之相反,弱类型语言则不要求用户明晰指定变量的数据类型,比如VBScript。用户可以将任意类型的数值赋给该变量。而且,变量的数据类型之间的转换也无需明晰进行。

Shell是一种动态类型语言和弱类型语言,即在Shell中,变量的数据类型无需显示地申明,变量的数据类型会依照不同的操作有所变化。确切地讲,Shell中的变量是不分数据类型的,统一地根据字符串储存。

在Shell中,一般情况下用户可以直接使用变量,无需先进行定义,当用户第一次使用某个变量名时,实际上就同时定义了这个变量,在变量的作用域内,用户都可以使用该变量。

虽然通过以上方法可以十分便捷地定义变量,而且,对于变量的个别属性却不容易控制,比如,变量的类型和读写属性等。为了更好地控制变量的相关属性,bash提供了一个名称为declare的命令来申明变量,该命令的基本句型如下:

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

以上程序的执行结果如下:

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

下边对比执行结果剖析一下代码。

第5行使用一般的方法定义了一个变量x,而且将一个算术式作为初始值赋给该变量。第6行输出变量x的值。上面早已讲过,Shell上将所有的数据都看做是字符串来储存的,所以在程序执行的时侯,Shell并不将6/3当作一个将被求值的算术式,而是作为一个普通的字符串,所以第6行直接输出了这个算术式本身,得到了结果的第2行。

代码的第8行使用declare句子申明了变量x为整数,而且程序并没对变量x重新形参,所以第9行的echo句子的执行结果依然得到算术式本身,即结果的第3行。

代码的第11行对变量x重新形参,将后面的算术表达式赋给它。由于当变量被申明为整数以后,可以直接参与算术运算,所以第12行的echo句子中输出了算术式的值,即结果的第4行。

第14行尝试将一个字符串值赋给整数变量x,但是在第15行使用echo句子输出x的值。在Shell中,假如变量被申明成整数,把一个结果不是整数的表达式形参给它时,才会弄成0。因而,结果第5行中的0是代码第15行的echo句子的输出。

第17行将一个浮点数赋给变量x,由于bash并不外置对浮点数的支持,所以得到了执行结果中的第6行的错误消息,此时,变量x的值变为0,即结果的第7行中的0。

第20行取消变量x的整数类型属性,第22行重新将算术式赋给变量x,但是在第23行使用echo句子输出变量x的值。因为此时变量x早已不是整数变量,所以不能直接参数算术运算。因而,变量x的值依然得到了算术式本身,即结果的第8行。

在Shell中,为了得到算术式的值,可以有两种方式,其中一种就是使用方括弧,即第25行中的形式。结果的第9行正是此时变量x的值。另外一种是使用圆括弧,即第28行中的形式。从执行结果可以获知,这两种形式都可以得到用户所期望的结果。

第31行使用r选项申明了一个只读变量,第43行尝试为该变量重新形参,因而得到了结果中第12行的错误消息。此时变量x的值依然是2,所以才有结果中的第13行。

变量和冒号

Shell变量中的符号“$”表示取变量的值。只有在取值的时侯才使用,定义和形参时无需使用符号“$”。另外,实际上Shell中变量的原型为${var},而常用的书写方式$var只是一个缩写。在个别情况下,缩写方式会造成程序执行错误。

Shell语言中一共有3种冒号,分别为单冒号(”)、双冒号(””)和反冒号(“)。这3种冒号的作用是不同的,其对线冒号括上去的字符都作为普通字符出现;由双冒号括上去的字符,除“$”、“”、“’”和“””这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待;由反冒号括上去的字串被Shell解释为命令,在执行时,Shell首先执行该命令,并以它的标准输出结果代替整个反冒号(包括两个反冒号)部份。

变量的作用域

1、全局变量

一般觉得,全局变量是使用范围较大的变量,它除了限于某个局部使用。在Shell语言中,全局变量可以在脚本中定义,也可以在某个函数中定义。在脚本中定义的变量都是全局变量,其作用域为从被定义的地方开始,仍然到Shell脚本结束或则被显式地删掉。

不仅在脚本中定义全局变量之外,在函数内部定义的变量默认情况下也是全局变量,其作用域为从函数被调用时执行变量定义的地方开始,仍然到Shell脚本结束或则被显式地删掉为止。

2、局部变量

与全局变量相比,局部变量的使用范围较小,一般仅限于某个程序段访问,比如函数内部。在Shell语言中,可以在函数内部通过local关键字定义局部变量,另外,函数的参数也是局部变量。

系统变量

linux命令解释器有哪些_命令解释器有哪两种_命令解释器有哪些

环境变量

依照惯例,Shell中的环境变量全部使用小写字母表示。

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

演示通过环境变量来获取与当前Shell有关的一些环境变量的值,代码如下:

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

变量形参

一个没有初始化的Shell变量被觉得是一个空字符串。用户可以通过变量的形参操作来完成变量的申明并赋于一个特定的值。而且可以通过形参句子为一个变量多次形参,以改变其值。

通常情况下,Shell上将所有普通变量的值都看做字符串。假如value中包含空格、制表符和换行符,则必须用单冒号或则双冒号将其造成来。双冒号内容许变量替换,而单冒号则不可以。中间的等于号“=”称为形参符号,形参符号的左右两侧不能直接跟空格,否则Shell会将其视为命令。

引用变量的值

在Shell中,用户可以通过在变量名后面加上“$”来获取该变量的值。诸如:$str。

为了才能使Shell正确地划分变量名,防止混淆,用户在引用变量时可以使用大括弧将变量名括上去。诸如:${str}abc。

去除变量

使用unset句子:unsetvaricable_name

引用符号

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

命令替换

所谓命令替换,是指在Shell程序中,将某个Shell命令的执行结果赋给某个变量。在bash中,有两种句型可以进行命令替换,分别使用反冒号和圆括弧,如下:

`shell_command`或则$(shell_command)

条件测试

在Shell程序中,用户可以使用测试句子来测试指定的条件表达式的条件的真或则假。当指定的条件为真时,整个条件测试的返回值为0;反之,假如指定的条件为假,则条件测试句子的返回值为非0值。

注意:在Shell程序中,条件测试中的指定条件为真时,条件测试的返回值为0。这主要是为了保持与Shell程序的退出状态一致。当某个Shell程序成功执行后,该进程会返回一个0值;而假如该程序执行错误,则会返回一个非0值。

条件测试的句型有两种,分别是test命令和[命令,下边对这两种句型进行介绍。

test命令的句型如下:

testexpression

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

[命令的句型如下:

[expression]

字符串测试

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

整数测试

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

对于初学者来说,时常犯的一个错误就是错误地使用运算符。在进行整数比较的时侯,一定要是整数的运算符。并且,因为遭到其他程序设计语言的影响,初学者可能会使用字符串运算符中的“=”和“!=”来进行整数比较。

文件测试

linux命令解释器有哪些_命令解释器有哪两种_命令解释器有哪些

逻辑操作符

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

条件判定句子

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

在Shell程序中,假如想要将多条命令置于同一行中,则须要使用分号将其隔开。

当我们在Shell程序中使用代码创建或则更改某个文件的时侯,首先判定一下文件是否创建成功,或则判定文件是否存在是一个十分好的习惯。

在Shell中,还有一个特殊的命令,称为空命令,其表示方式是一个逗号“:”,该命令不做任何事情,而且它的退出状态永远是0。因而,假如我们将该命令作为if句子中的条件,则会永远执行then谓词,如下边的事例所示。

在实际的编程中,有人喜欢使用&&操作符来取代if句子,如下边的事例所示。

linux命令解释器有哪些_命令解释器有哪两种_命令解释器有哪些

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

多条件判定句子case

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

在前面的句型中,variable是一个变量,case句子会将该变量的值与value1~valuen中的每位值相比较,假若与某个value的值相等,则执行该value所对应的一组句子。当遇见“;;”符号时,就跳出case句子红帽子linux,执行esac句子前面的句子。若果没有任何一个值与variable的值相匹配,则执行*旁边的一组句子。

对于前面的case句子,用户应当注意以下几点:

运算符

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

执行算术运算

可以通过4种形式来执行算术运算,这4种形式分别如下:

1、使用expr外部程序

expr expression

2、使用$((…))

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

3、使用$[…]

linux命令解释器有哪些_命令解释器有哪两种_命令解释器有哪些

4、使用let命令

使用let命令可以执行一个或则多个算术表达式,其中的变量名无需使用$符号。假如表达式中富含空格或则其他特殊字符,则必须将其引用上去。

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

位运算符

linux命令解释器有哪些_命令解释器有哪两种_命令解释器有哪些

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

自增/自减运算符

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

循环结构带列表的for循环句子

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

在前面的句型中,variable称为循环变量,list是一个列表,可以是一系列的数字或则字符串,元素之间使用空格隔开。do和done之间的所有的句子称为循环体,即循环结构中重复执行的句子。

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

不仅将各个数字全部列举之外,用户还可以使用另外一种比较简单的书写方式,即用一个范围来取代列举所有的元素。诸如,里面的1~8所有的数字可以使用{1…8}来取代。

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

for句子的步长,即循环变量每次降低的值都是1。实际上linux使用教程,Shell容许用户指定for句子的步长。当用户须要另外指定步长时,其基本句型如下:

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

演示通过for循环,并配合步长来估算100以内质数的和,代码如下:

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

在for循环的列表条件中,不仅使用数字作为元素之外,还可以使用字符串。

本例将1周中7天的名子作为列表条件,依次输出每晚的名称。代码如下:

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

假如使用字符串作为列表元素,实际上可以省略外边的大括弧。为此,可以更改为以下方式:

命令解释器有哪些_命令解释器有哪两种_linux命令解释器有哪些

在后面的事例中的for循环上面,都是直接指定循环的条件列表。实际上,Shell中的for循环十分灵活,不仅直接指定条件之外,还可以通过其他的方法来获得条件列表。诸如,个别Shell命令会输出一个列表。其中linux命令解释器有哪些,最常见的命令就是ls命令,该命令可以列举某个目录下边的文件清单。

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

列表for循环还有一个比较重要的用途就是处理脚本的参数。上面讲过,用户可以通过系统变量“$*”一次获取所有的参数,而且,这种参数值之间是通过空格隔开的,所以,用户同样可以将该系统变量获取的参数值作为for循环的条件列表,因而可以依次处理各个参数。

linux命令解释器有哪些_命令解释器有哪些_命令解释器有哪两种

命令解释器有哪些_linux命令解释器有哪些_命令解释器有哪两种

类C风格的for循环句子

在Linux或则UNIX里面,C或则C++是最主流的开发语言。为此,从事Linux系统管理的系统管理员也或多或少地接触过C或则C++语言。一般来说,这种人对于C语言的句型比较熟悉。为了适应这部份用户的习惯,bash也提供了类C风格的for循环句子。类C风格的for循环句子的基本句型如下:

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

演示类C风格的for循环句子的使用方式,代码如下:

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

使用for循环句子处理链表

linux命令解释器有哪些_命令解释器有哪两种_命令解释器有哪些

演示通过for循环来遍历链表,代码如下:

命令解释器有哪两种_命令解释器有哪些_linux命令解释器有哪些

until循环句子

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

在前面的句型中,expression是一个条件表达式。当该表达式的值不为0时,将执行do和done之间的句子;当expression的值为0时,将退出until循环结构,继续执行done句子前面的其他句子。

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

while循环句子

命令解释器有哪两种_linux命令解释器有哪些_命令解释器有哪些

当while循环结构在执行时,会首先估算expression表达式的值,假如表达式的值为0,则执行循环体中的句子;否则,退出while循环,执行done关键字前面的句子。当循环体中的句子执行完成以后,会重新估算expression的值,假如依然是0,则继续执行下一次的循环linux命令解释器有哪些,直到expression的值为非0。

理解while句子与until句子的区别

这两个句子的句型结构十分相像,都是将循环条件置于句子的旁边。

然而,在while句子中,当expression的值为0时才执行循环体中的句子,当expression的值为非0值时,将退出循环体;在until句子中,当expression的值为非0时,执行循环体中的句子,当expression的值为0时,将退出循环结构。因而,用户在使用这两种句子时,一定要注意分辨这个关键的地方。

在执行机制方面,这两个句子是相同的,即首先会判定expression的值,当该表达式的值符合要求时,才执行循环体中的句子;否则,都不会执行循环体。

借助break和continue句子控制循环

break:立刻从循环中退出;

continue:而前者则拿来跳过循环体中的个别句子,继续执行下一次循环。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复