Shell从入门到精通教学课件:第4章 条件测试和判断语句

上传人:努力****83 文档编号:193016537 上传时间:2023-03-07 格式:PPT 页数:78 大小:529.50KB
收藏 版权申诉 举报 下载
Shell从入门到精通教学课件:第4章 条件测试和判断语句_第1页
第1页 / 共78页
Shell从入门到精通教学课件:第4章 条件测试和判断语句_第2页
第2页 / 共78页
Shell从入门到精通教学课件:第4章 条件测试和判断语句_第3页
第3页 / 共78页
资源描述:

《Shell从入门到精通教学课件:第4章 条件测试和判断语句》由会员分享,可在线阅读,更多相关《Shell从入门到精通教学课件:第4章 条件测试和判断语句(78页珍藏版)》请在装配图网上搜索。

1、第4章 条件测试和判断语句本章主要涉及到的知识点有:条件测试:主要介绍Shell程序中的文件、变量、字符串数值以及逻辑等条件测试。条件判断语句:介绍基本的if、if else以及if elif语句的使用方法。多条件判断语句case:主要介绍case语句的基本语法以及使用case语句来解决一些实际问题。运算符:主要介绍Shell中常用的运算符的使用方法,例如算术运算符、位运算符以及自增、自减运算符等。4.1 条件测试为了能够正确处理为了能够正确处理ShellShell程序运行过程中遇到的各种情况,程序运行过程中遇到的各种情况,Linux ShellLinux Shell提供了一组测试运算符。通过

2、这些运算符,提供了一组测试运算符。通过这些运算符,ShellShell程程序能够判断某种或者几个条件是否成立。条件测试在各种流程控序能够判断某种或者几个条件是否成立。条件测试在各种流程控制语句,例如判断语句和循环语句中发挥了重要的作用,所以,制语句,例如判断语句和循环语句中发挥了重要的作用,所以,了解和掌握这些条件测试是非常重要的。了解和掌握这些条件测试是非常重要的。4.1.1 4.1.1 条件测试的基本语法条件测试的基本语法在在ShellShell程序中,用户可以使用测试语句来测试指定的条件程序中,用户可以使用测试语句来测试指定的条件表达式的条件的真或者假。当指定的条件为真时,整个条件测试表

3、达式的条件的真或者假。当指定的条件为真时,整个条件测试的返回值为的返回值为0 0;反之,如果指定的条件为假,则条件测试语句的返;反之,如果指定的条件为假,则条件测试语句的返回值为非回值为非0 0值。值。条件测试的语法有条件测试的语法有2 2种,分别是种,分别是testtest命令和命令和 命令,命令,testtest命令的命令的语法如下:语法如下:test expressiontest expression其中,参数其中,参数expressionexpression表示需要进行测试的条件表达式,可以表示需要进行测试的条件表达式,可以由字符串、整数、文件名以及各种运算符组成。例如,下面的表由字符

4、串、整数、文件名以及各种运算符组成。例如,下面的表达式都是有效的条件表达式:达式都是有效的条件表达式:1-eq 21-eq 2stringstring-z string-z string-e file-e file 命令的语法如下:命令的语法如下:expression expression 在上面的语法中,在上面的语法中,是条件测试命令,参数是条件测试命令,参数expressionexpression是一是一个条件表达式。其中个条件表达式。其中expressionexpression的语法与上面的的语法与上面的testtest命令中的语命令中的语法完全相同。条件表达式和左右方括号之间都必须有一

5、个空格。法完全相同。条件表达式和左右方括号之间都必须有一个空格。4.1.2 4.1.2 字符串测试字符串测试通常情况下,对于字符串的操作主要包括判断字符串变量是通常情况下,对于字符串的操作主要包括判断字符串变量是否为空以及两个字符串是否相等。在否为空以及两个字符串是否相等。在ShellShell中,用户可以通过中,用户可以通过5 5种种运算符来对字符串进行操作运算符来对字符串进行操作。运算符说明string判断指定的字符串是否为空string1=string2判断2个字符串string1和string2是否相等string1!=string2判断2个字符串string1和string2是否不相

6、等-n string判断string是否是非空串-z string判断string是否是空串#定义字符串变量rootlinux chapter4#a=abc#使用test命令测试变量$a是否为空串rootlinux chapter4#test$a#通过echo命令和$?环境变量输出测试结果rootlinux chapter4#echo$?#输出结果为0,表示变量$a的值不为空0#使用-n运算符测试变量$a是否不为空rootlinux chapter4#test-n$a#输出测试结果rootlinux chapter4#echo$?#测试结果为0表示变量为非空字符串0#使用-z运算符测试变量$a

7、是否为空串rootlinux chapter4#test-z$a#测试结果为1,表示变量$a不是空串rootlinux chapter4#echo$?1【例4-1】演示字符串测试的使用方法【例4-2】演示Shell中比较2个字符串值的方法#定义变量$arootlinux chapter4#a=hello#定义变量$brootlinux chapter4#b=world#比较2个字符串是否相等rootlinux chapter4#$a=$b#输出测试结果为1,表示$a和$b不相等rootlinux chapter4#echo$?1#测试$a和$b是否不相等rootlinux chapter4#t

8、est$a!=$b#输出测试结果为0,表示$a和$b不相等rootlinux chapter4#echo$?0【例4-3】说明空格对于字符串比较结果的影响#定义字符串变量$arootlinux chapter4#a=Hello world.#定义字符串变量$brootlinux chapter4#b=Hello world.#测试$a和$b是否相等rootlinux chapter4#$a=$b rootlinux chapter4#echo$?1【例4-4】演示字母大小写对于字符串比较结果的影响#变量$a的第1个字母为大写的Hrootlinux chapter4#a=Hello world.

9、#变量$b的第1个字母为小写的hrootlinux chapter4#b=hello world.rootlinux chapter4#$a=$b#变量$a和$b的值不相等rootlinux chapter4#echo$?14.1.3 4.1.3 整数测试整数测试与字符串测试类似,整数测试也有与字符串测试类似,整数测试也有2 2种形式的语法:种形式的语法:test number1 op number2test number1 op number2或者或者 number1 op number2 number1 op number2 其中,其中,number1number1和和number2num

10、ber2分别表示参与比较的分别表示参与比较的2 2个整数,可个整数,可以是常量或者变量。以是常量或者变量。opop表示运算符。表示运算符。运算符说明number1-eq number2比较number1是否等于number2。如果相等,测试结果为0number1-ne number2比较number1和number2是否不相等。如果number1和number2不相等,测试结果为0number1-gt number2比较number1是否大于number2。如果number1大于number2,测试结果为0number1-lt number2测试number1是否小于number2。如果num

11、ber1小于number2,测试结果为0number1-ge number2测试number1是否大于等于number2。如果number1大于等于number2,测试结果为0number1-le number2测试number1是否小于等于number2。如果number1小于等于number2,测试结果为0【例4-5】比较2个整数是否相等rootlinux chapter4#12-eq 14 rootlinux chapter4#echo$?04 1【例4-6】比较2个整数的大小rootlinux chapter4#test 12-gt 14rootlinux chapter4#echo$

12、?1rootlinux chapter4#test 12-lt 14rootlinux chapter4#echo$?0【例4-7】比较变量与常数的大小rootlinux chapter4#x=365rootlinux chapter4#test$x-eq 365rootlinux chapter4#echo$?06 0rootlinux chapter4#test$x-gt 364rootlinux chapter4#echo$?10 0【例4-8】比较2个变量值的大小。在本例中,首先定义2个整数变量$x和$y,然后判断变量$x是否小于或者等于变量$y。rootlinux chapter4#

13、x=123rootlinux chapter4#y=36rootlinux chapter4#$x-le$y rootlinux chapter4#echo$?08 1【例4-9】使用=比较两个整数会导致错误结果。rootlinux chapter4#12=13 rootlinux chapter4#echo$?1rootlinux chapter4#12-eq 13 rootlinux chapter4#echo$?1【例4-10】使用针对整数的运算符来比较非整数会导致错误结果。rootlinux chapter4#x=12.3rootlinux chapter4#y=12rootlinux

14、 chapter4#$x-gt$y-bash:12.3:integer expression expected4.1.4 4.1.4 文件测试文件测试文件测试的语法如下:文件测试的语法如下:test op filetest op file或者或者 op file op file 在上面的语法中,在上面的语法中,opop表示操作符,常用的操作符参见表表示操作符,常用的操作符参见表4.34.3,其中,其中filefile表示要测试的文件名。表示要测试的文件名。【例4-11】通过文件操作符来判断文件是否存在rootlinux chapter4#test-a file1rootlinux chapte

15、r4#echo$?0【例4-12】判断文件是否存在。rootlinux chapter4#-a file3 rootlinux chapter4#echo$?1【例4-13】通过操作符判断各种文件类型rootlinux chapter4#test-d dir1rootlinux chapter4#echo$?0rootlinux chapter4#test-f file1rootlinux chapter4#echo$?08 0rootlinux chapter4#test-s file2rootlinux chapter4#echo$?1rootlinux chapter4#test-b f

16、ile1rootlinux chapter4#echo$?1rootlinux chapter4#test-b/dev/sdarootlinux chapter4#echo$?0rootlinux chapter4#test-c/dev/ttyrootlinux chapter4#echo$?0 【例4-14】通过文件测试判断用户对文件的访问权限rootlinux chapter4#test-w file1rootlinux chapter4#echo$?0rootlinux chapter4#test-r file1rootlinux chapter4#echo$?0rootlinux ch

17、apter4#test-x file1rootlinux chapter4#echo$?1rootlinux chapter4#test-x hello.shrootlinux chapter4#echo$?0【例4-15】使用chmod命令为hello.sh文件设置setuid权限,这样的话执行该文件的用户就会临时用户该文件所有者的权限rootlinux chapter4#chmod u+s hello.sh rootlinux chapter4#lltotal 12drwxr-xr-x 2 rootroot 4096 Nov 9 14:50 dir1-rw-r-r-rootroot 12

18、Nov 9 14:49 file1-rw-r-r-1 root root 0 Nov 9 14:49 file2-rwsr-xr-x 1 root root 30 Nov 9 15:06 hello.shrootlinux chapter4#test-u hello.sh rootlinux chapter4#echo$?04.1.5 4.1.5 逻辑操作符逻辑操作符ShellShell中的逻辑操作符可以将多个不同的条件组合起来,从中的逻辑操作符可以将多个不同的条件组合起来,从而构成一个复杂的条件表达式而构成一个复杂的条件表达式。【例4-16】判断整数变量$a的值是否大于20,并且小于60。r

19、ootlinux chapter4#a=35rootlinux chapter4#test$a-gt 20-a$a-lt 60rootlinux chapter4#echo$?0【例4-17】通过条件测试来判断当前用户是否拥有某个文件的写入权限rootlinux chapter4#-e file1-a-w file1 rootlinux chapter4#echo$?04.2 条件判断语句条件判断语句是一种最简单的流程控制语句。该语句使得程条件判断语句是一种最简单的流程控制语句。该语句使得程序根据不同的条件来执行不同的程序分支。本节将介绍序根据不同的条件来执行不同的程序分支。本节将介绍Shel

20、lShell程序程序设计中的简单的条件判断语句。设计中的简单的条件判断语句。4.2.1 4.2.1 使用简单的使用简单的if if语句进行条件判断语句进行条件判断条件判断语句使用条件判断语句使用ifif语句来实现。最简单的语句来实现。最简单的ifif语句的语法如下语句的语法如下:if expressionif expressionthenthenstatement1statement1statement2statement2.fifi在上面的语法中,在上面的语法中,expressionexpression通常代表一个条件表达式,但是通常代表一个条件表达式,但是也可以是也可以是ShellShel

21、l命令命令。为了使得代码更加紧凑,在某些情况下,我们可以将为了使得代码更加紧凑,在某些情况下,我们可以将ifif子句子句和和thenthen子句写在同一行中。此时,需要在子句写在同一行中。此时,需要在expressionexpression表达式后面表达式后面加上一个分号,如下:加上一个分号,如下:if expression;thenif expression;thenstatement1statement1statement2statement2fifi分号的作用是表示分号的作用是表示ifif子句已经结束,后面的代码是子句已经结束,后面的代码是thenthen子句子句。#!/bin/sh#使

22、用条件测试判断/bin/bash是否是一个常规文件if -f/bin/bash then echo/bin/bash is a filefirootlinux chapter4#./ex4-18.sh/bin/bash is a file【例4-18】通过条件测试判断文件类型#!/bin/sh#通过echo命令和重定向创建一个文件echo hello world!./msg.logif -f./msg.log;then echo file has been created.;firootlinux chapter4#./ex4-19.sh file has been crreated.【例4-

23、19】通过条件测试判断文件是否创建成功#!/bin/sh#使用空命令作为条件if:;then echo always true;firootlinux chapter4#./ex4-20.sh alway true.【例4-20】使用空命令作为判断条件#!/bin/sh#使用&操作符代替if语句test$(whoami)!=root&(echo you are using a non-privileged account;exit 1)而当我们切换到其他用户再执行该程序时,则会输出有关提示而当我们切换到其他用户再执行该程序时,则会输出有关提示信息,如下:信息,如下:【例4-21】使用&操作符代

24、替if语句如果以如果以rootroot用户的身份执行【例用户的身份执行【例4-214-21】,则没任何输出,如下:】,则没任何输出,如下:rootlinux chapter4#./ex4-21.shrootlinux chapter4#su-chunxiaochunxiaolinux$./ex4-21.sh you are using a non-privileged accountif elseif else语句的基本语法如下:语句的基本语法如下:if expressionif expressionthenthenstatement1statement1statement2statement

25、2elseelsestatement3statement3statement4statement4fifi在上面的语法中,在上面的语法中,expressionexpression表示表示ifif语句的执行条件,可以语句的执行条件,可以是条件表达式或者一个是条件表达式或者一个ShellShell命令。如果命令。如果expressionexpression的值为真,则的值为真,则执行执行thenthen子句中的语句子句中的语句statement1statement1、statement2statement2。如果。如果expressionexpression的值为假,则执行的值为假,则执行else

26、else子句中的语句,包括子句中的语句,包括statement3statement3、statement4statement4、,最后通过,最后通过fifi关键字结束整个关键字结束整个ifif代代码块。码块。#!/bin/sh#输出提示信息echo Please enter a number:#从键盘读取用户输入的数字read num#如果用户输入的数字大于10if$num-gt 10;then#输出大于10的提示信息 echo The number is greater than 10.#否则else#输出小于或者等于10的提示信息echo The number is equal to or

27、 less than 10.fi【例4-22】使用if else语句进行流程控制rootlinux chapter4#./ex4-22.sh Please enter a number:6The number is equal to or less than 10.rootlinux chapter4#./ex4-22.sh Please enter a number:12The number is greater than 10.#!/bin/sh.#输出提示信息echo Please enter a score:#读取用户输入数据read score#如果用户没有输入数据,则提示用户重新输

28、入if -z$score;then echo You enter nothing.Please enter a score:read scoreelse#如果用户输入的数据不对,则重新输入 if$score-lt 0-o$score-gt 100;then echo The score should be between 0 and 100.Please enter again:read score else#输出级别A【例4-23】演示如何通过if else语句来根据学生的百分制成绩来输出五分制成绩 if$score-ge 90;then echo The grade is A.else#输

29、出级别B if$score-ge 80;then echo The grade is B.else#输出级别C if$score-ge 70;then echo The grade is C.else#输出级别D if$score-ge 60;then echo The grade is D.else#输出级别E echo The grade is E.fi fi fi fifirootlinux chapter4#./ex4-23.sh Please enter a score:12The grade is E.rootlinux chapter4#./ex4-23.sh Please en

30、ter a score:98The grade is A.rootlinux chapter4#./ex4-23.sh Please enter a score:77The grade is C.4.2.3 4.2.3 使用使用if elifif elif语句进行多条件判断语句进行多条件判断if expression1then statement1 statement2 elif expression2then statement3 statement4 elif expression3then statement5 statement6 else statementn .fiif elifi

31、f elif语句的基本语法如下:语句的基本语法如下:在上面的语法中,在上面的语法中,expression1expression1表示整个表示整个if elfiif elfi语句语句结构中的第结构中的第1 1个条件表达式,如果该条件表达式的值为真个条件表达式,如果该条件表达式的值为真,则执行第,则执行第1 1个个thenthen子句中的语句子句中的语句statement1statement1以及以及statement2statement2等等;否则,继续下面的判断。如果表达式等等;否则,继续下面的判断。如果表达式expression2expression2的值为真,则执行第的值为真,则执行第2

32、2个个thenthen子句中的语句子句中的语句,以此类推。如果所有的条件表达式的值都为假,则执,以此类推。如果所有的条件表达式的值都为假,则执行最后的行最后的elseelse子句中的语句。最后是子句中的语句。最后是if elifif elif结构的结束结构的结束标志标志fifi。#!/bin/shecho Please enter a score:read scoreif -z$score;then echo You enter nothing.Please enter a score:read scoreelse if$score-lt 0-o$score-gt 100;then echo

33、The score should be between 0 and 100.Please enter again:read score else#如果成绩大于90 if$score-ge 90;then echo The grade is A.#如果成绩大于80且小于90【例4-24】本例对【例4-23】进行改进,使得该程序的可读性更强 elif$score-ge 80;then echo The grade is B.#如果成绩大于70且小于80 elif$score-ge 70;then echo The grade is C.#如果成绩大于60且小于70 elif$score-ge 60

34、;then echo The grade is D.#如果成绩小于60 else echo The grade is E.fi fifi4.2.4 4.2.4 使用使用exitexit语句退出程序语句退出程序exitexit语句的基本作用是终止语句的基本作用是终止ShellShell程序的执行。除此之外,程序的执行。除此之外,exitexit语句还可以带一个可选的参数,用来指定程序退出时的状态语句还可以带一个可选的参数,用来指定程序退出时的状态码。码。exitexit语句的基本语法如下:语句的基本语法如下:exit statusexit status其中,其中,statusstatus参数表示

35、退出状态,该参数是一个整数值,其参数表示退出状态,该参数是一个整数值,其取值范围为取值范围为02550255。与其他的。与其他的ShellShell命令的一样,命令的一样,ShellShell程序的退出程序的退出状态也储存在系统变量状态也储存在系统变量$?$?中,因此,用户可以通过该变量取得中,因此,用户可以通过该变量取得ShellShell程序返回给父进程的退出状态码。程序返回给父进程的退出状态码。#!/bin/sh#使用echo语句输出字符串echo hello world!#使用$?变量获取echo语句的执行状态echo$?#执行一个无效的命令aaa#输出执行状态echo$?#退出exi

36、t 120【例4-25】演示在不同的情况下,程序返回不同的状态码rootlinux chapter4#./ex4-25.sh hello world!0./ex4-25.sh:line 11:aaa:command not found127#!/bin/sh#如果文件已经存在,则直接退出if -e$1 then echo file$1 exists.exit 1#如果文件不存在,则创建文件else touch$1 echo file$1 has been created.exit 0fi【例4-26】使用if和exit语句,使得程序在适当的时候退出rootlinux chapter4#./ex

37、4-26.sh/bin/lsfile/bin/ls exists.rootlinux chapter4#echo$?1rootlinux chapter4#./ex4-26.sh./demo.txtfile./demo.txt has been created.rootlinux chapter4#echo$?04.3 多条件判断语句casecasecase语句的基本语法如下:语句的基本语法如下:case variable invalue1)statement1 statement2 .statementn;value2)statement1 statement2 .statementn;va

38、lue3)statement1 statement2 .statementn;.valuen)statement1 statement2 .statementn;*)statement1 statement2 .statementn;esac在上面的语法中,在上面的语法中,variablevariable是一个变量,是一个变量,casecase语句会将该变语句会将该变量的值与每量的值与每valuevalue1 1valuevaluen n中的每个值相比较,如果与某个中的每个值相比较,如果与某个valuevalue的的值相等,则执行该值相等,则执行该valuevalue所对应的一组语句。当遇到所

39、对应的一组语句。当遇到“;”符号时符号时,就跳出,就跳出casecase语句,执行语句,执行esacesac语句后面的语句。如果没有任何一语句后面的语句。如果没有任何一个值与个值与variablevariable的值相匹配,则执行的值相匹配,则执行*后面的一组语句。后面的一组语句。4.3.2 4.3.2 利用利用casecase语句处理选项参数语句处理选项参数使用使用casecase语句来处理选项参数在语句来处理选项参数在ShellShell中非常普遍,尤其是中非常普遍,尤其是/etc/init.d/etc/init.d目录中服务脚本,几乎都含有一个或者多个目录中服务脚本,几乎都含有一个或者多

40、个casecase语句语句。4.3.3 4.3.3 利用利用casecase语句处理用户输入语句处理用户输入#!/bin/sh#输出提示信息echo Hit a key,then hit return.#读取用户按下的键read keypress#case语句开始case$keypress in#小写字母 :lower:)echo Lowercase letter.;#大写字母 :upper:)echo Uppercase letter.;#单个数字 0-9)echo Digit.;#其他字符 *)echo other letter.;esac【例4-27】说明case语句的使用方法rootl

41、inux chapter4#./ex4-27.sh Hit a key,then hit return.aLowercase letter.rootlinux chapter4#./ex4-27.sh Hit a key,then hit return.BUppercase letter.rootlinux chapter4#./ex4-27.sh Hit a key,then hit return.8Digit.rootlinux chapter4#./ex4-27.sh Hit a key,then hit return.?other letter.4.4 运算符本节将介绍本节将介绍算术运

42、算符、位运算符以及自增算术运算符、位运算符以及自增/自减运算符等自减运算符等的使用方法。的使用方法。4.4.1 4.4.1 算术运算符算术运算符与其他的程序设计语言一样,与其他的程序设计语言一样,ShellShell中的算术运算符也主要中的算术运算符也主要包括加(包括加(+)、减()、减(-)、乘()、乘(*)、除()、除(/)、求余()、求余(%)以及幂运)以及幂运算(算(*)等。表)等。表4-44-4列出了常用的算术运算符以及使用方法。列出了常用的算术运算符以及使用方法。在在Linux ShellLinux Shell中,用户可以通过中,用户可以通过4 4种方式来执行算术运算,种方式来执行

43、算术运算,这这4 4种方式分别如下。种方式分别如下。1 1使用使用exprexpr外部程序外部程序exprexpr是一个是一个ShellShell命令,可以计算某个表达式的值,其基本命令,可以计算某个表达式的值,其基本语法如下:语法如下:expr expressionexpr expression其中,其中,expressexpress是要计算的表达式。是要计算的表达式。#!/bin/sh#计算2和100的差,即-98result=expr 2-100echo$result#计算2和100的和,即102result=expr 2+100echo$result#计算2和5的乘积,即10resul

44、t=expr 2*5echo$result#计算24和8的商,即3result=expr 24/8echo$result#先计算2和6的差,然后再乘以12,即-48result=expr(2-6)*12echo$result#错误的语法result=expr 2+5echo$result#错误的语法result=expr 2-4*9echo$result#错误的语法result=expr 1-(4-7)echo$result【例4-28】演示使用expr命令来计算不同的算术运算rootlinux chapter4#./ex4-28.sh-98102103-482+52-4*9./ex4-28.

45、sh:command substitution:line 26:syntax error near unexpected token(./ex4-28.sh:command substitution:line 26:expr 1-(4-7)2 2使用使用$()$()使用这种形式来进行算术运算写法比较自由,毋需对运算符使用这种形式来进行算术运算写法比较自由,毋需对运算符和括号做转义处理,可以采用松散或者紧凑的格式来书写表达式和括号做转义处理,可以采用松散或者紧凑的格式来书写表达式。#!/bin/sh#紧凑格式,计算3和6的和result=$(3+6)echo$result#松散格式,计算3和9的

46、和result=$(3+9)echo$result#计算3和6的乘积reuslt=$(3*6)echo$result#计算7和5的商result=$(7/5)echo$result#计算8和3的余数result=$(8%3)echo$result#复合运算result=$(1-4)*5)echo$result【例4-29】演示如何使用$(.)符号进行算术运算rootlinux chapter4#./ex4-29.sh 9121212-153使用使用$#!/bin/sh#加法运算result=$4+5echo$result#复合运算result=$(1+2)*3echo$result#幂运算re

47、sult=$2*4 echo$resultrootlinux chapter4#./ex4-30.sh 9916【例4-30】演示如何使用方括号来进行算术运算4 4使用使用letlet命令命令使用使用letlet命令可以执行一个或者多个算术表达式,其中的变命令可以执行一个或者多个算术表达式,其中的变量名毋需使用量名毋需使用$符号。如果表达式中含有空格或者其他特殊字符,符号。如果表达式中含有空格或者其他特殊字符,则必须将其引用起来。则必须将其引用起来。#!/bin/sh#定义变量n=10#加法运算let n=n+1echo$n#乘法运算let n=n*10echo$n#幂运算let n=n*2e

48、cho$nrootlinux chapter4#./ex4-31.sh 1111012100【例4-31】演示使用let命令来执行算术运算复合算术运算符复合算术运算符4.4.2 4.4.2 位运算符位运算符位运算通常出现在整数间,它针对的不是整个整数,而是其位运算通常出现在整数间,它针对的不是整个整数,而是其二进制表示形式中的某个或者某些位(二进制表示形式中的某个或者某些位(bitbit)。例如,)。例如,2121是将二是将二进制形式的进制形式的2 2,即,即1010,左移,左移1 1位,从而变成位,从而变成100100,即,即4 4。下下表列出了表列出了常用的位运算符。常用的位运算符。#!/

49、bin/sh#左移运算result=$2 2 echo$result#按位与运算result=$8&4 echo$result#按位非运算result=$8 echo$result#按位异或运算result=$10 6 echo$resultrootlinux chapter4#./ex4-32.sh 1620-912【例4-32】演示位运算符的使用方法复合位运算符复合位运算符#!/bin/sh#定义变量xx=5#执行左移赋值复合运算let x=2echo$x#执行按位或赋值运算let x|=2echo$xrootlinux chapter4#./ex4-33.sh 802022【例4-33】

50、演示表4-7中列出的复合位运算符的使用方法4.4.3 4.4.3 自增自增/自减运算符自减运算符在在ShellShell中,还有一类称为自增或者自减的运算符,这类运中,还有一类称为自增或者自减的运算符,这类运算符的作用是将某个变量自动加算符的作用是将某个变量自动加1 1或者减或者减1 1。这类运算符一共有。这类运算符一共有4 4种种,分别是前置自增、前置自减、后置自增和后置自减。,分别是前置自增、前置自减、后置自增和后置自减。#!/bin/sh#定义变量xx=5#将变量x先自增,然后再计算表达式的值x=$x+(+x)echo$x#将变量先自减,然后再计算表达式的值x=$-x echo$x#先计

51、算表达式的值,然后再自增x=$(x+)echo$x#先计算表达式的值,然后再自减x=$(x-)echo$xrootlinux chapter4#./ex4-34.sh 11101010【例4-34】演示自增或者自减运算符的使用方法4.4.4 4.4.4 数字常量的进制数字常量的进制在在ShellShell中,用户可以使用中,用户可以使用2 2种语法来表示不同的进制,首先种语法来表示不同的进制,首先是增加前缀,例如以是增加前缀,例如以0 0开头的数字表示八进制,以开头的数字表示八进制,以0 x0 x开头的数字表开头的数字表示十六进制。第示十六进制。第2 2种语法是使用井号种语法是使用井号“#”,

52、例如,例如2#10002#1000表示二进表示二进制,制,8#428#42表示八进制。表示八进制。#!/bin/sh#十进制20(x=20)echo$x#八进制20(x=020)echo$x#十六进制20(x=0 x20)echo$xrootlinux chapter4#./ex4-35.sh 201632【例4-35】演示不同的进制的表示方法#!/bin/sh#二进制(x=2#100000)echo$x#八进制(x=8#123)echo$x#十六进制(x=16#32)echo$xrootlinux chapter4#./ex4-36.sh 328350【例4-36】演示使用井号“#”来表示不

53、同进制的方法4.5 小结本章深入探讨了条件测试、简单条件判断语句、多条件判断本章深入探讨了条件测试、简单条件判断语句、多条件判断语句以及运算符的使用方法等。主要内容包括条件测试的基本语语句以及运算符的使用方法等。主要内容包括条件测试的基本语法、字符串测试、数值测试、文件测试、逻辑操作符、简单的法、字符串测试、数值测试、文件测试、逻辑操作符、简单的if if elseelse语句、语句、if elifif elif语句、语句、casecase语句以及算术运算符、位运算符和语句以及算术运算符、位运算符和自增自减运算符等。重点在于掌握好基本的条件测试的语法以及自增自减运算符等。重点在于掌握好基本的条件测试的语法以及条件判断的使用方法。在下面的一章中,我们将介绍另外一种流条件判断的使用方法。在下面的一章中,我们将介绍另外一种流程控制语句,即循环结构。程控制语句,即循环结构。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!