Linux环境编程3Linux-Shell编程课件.ppt

上传人(卖家):晟晟文业 文档编号:5192201 上传时间:2023-02-16 格式:PPT 页数:61 大小:497.50KB
下载 相关 举报
Linux环境编程3Linux-Shell编程课件.ppt_第1页
第1页 / 共61页
Linux环境编程3Linux-Shell编程课件.ppt_第2页
第2页 / 共61页
Linux环境编程3Linux-Shell编程课件.ppt_第3页
第3页 / 共61页
Linux环境编程3Linux-Shell编程课件.ppt_第4页
第4页 / 共61页
Linux环境编程3Linux-Shell编程课件.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

1、1第3章Linux Shell 编程23.1 基础知识第一个Shell程序Program 3-1:first.sh#!/bin/bashcd/tmpecho Hello,world!如何运行shell程序l3种方式赋予程序文件可执行权限 调用命令解释器使用source命令jianglinmeiubuntu:/sh$chmod a+x first.shjianglinmeiubuntu:/sh$./first.shHello,world!jianglinmeiubuntu:/sh$jianglinmeiubuntu:/sh$bash first.shHello,world!jianglinmei

2、ubuntu:/sh$jianglinmeiubuntu:/sh$source first.shHello,world!jianglinmeiubuntu:/tmp$3Shell的命令种类l内部命令Shell解释器本身包含的命令,在文件系统中没有相应的可执行文件,不能用“sudo”。如:cd,echo,source等。在执行内部命令时,不需要创建新进程。source命令也称为“点命令”,可以用点符号(“.”)代替。jianglinmeiubuntu:/sh$.first.shHello,world!jianglinmeiubuntu:/tmp$3.1 基础知识lShell函数以Shell语言书

3、写的一系列程序代码,可以像其他命令一样被引用。4Shell的命令种类l外部命令独立于Shell的可执行程序,在文件系统中有相应的可执行文件。如:ls,find,locate,grep,ifconfig等。命令行会创建一个当前Shell的复制进程来执行它,执行过程存在进程的创建和消毁。子进程改变的环境变量只影响本进程,而不会影响父进程($PWD)。3.1 基础知识5Shell执行命令的顺序l顺序别名关键字函数内部命令外部命令l在同名时,别名的优先级最高而外部命令的优先级最低。l内部命令“type”。jianglinmeihdp1:$type lsls is aliased to ls-color

4、=autojianglinmeihdp1:$type findfind is/usr/bin/findjianglinmeihdp1:$type pwdpwd is a shell builtinjianglinmeihdp1:$3.1 基础知识6注释、退出状态和逻辑操作l注释以“#”开头的文本表示注释,Shell解释器将忽略“#”之后的所有内容。如果要将“#”作为普通字符对待,需在其之前加“”进行转义,或使用引号对其进行引用。jianglinmeiubuntu:/sh$#echo this will not showjianglinmeiubuntu:/sh$echo#this will n

5、ot showjianglinmeiubuntu:/sh$echo#this is common text#this is common text3.1 基础知识7注释、退出状态和逻辑操作jianglinmeiubuntu:/sh$echo this should succeed.this should succeed.jianglinmeiubuntu:/sh$echo$?0jianglinmeiubuntu:/sh$rm/tmprm:cannot remove/tmp:Permission deniedjianglinmeiubuntu:/sh$echo$?1l退出状态每一条Shell命令

6、在退出时都会返回一个整数值给命令行Shell。“退出状态”用于指示命令的运行情况:成功还是失败,如果失败了是什么原因导致的失败。一般约定以0表示成功,非零值表示失败。使用特殊变量“$?”可以查看上一条命令的退出状态值。3.1 基础知识8注释、退出状态和逻辑操作Program 3-2:second.sh#!/bin/bashcd/tmp;echo Hello,world!l逻辑操作一般情况下,脚本程序中的各条命令是从上到下顺序执行的,不论上一条命令执行是否成功(退出状态为0),下一条命令都能得到执行。各条命令可以分行书写;也可以在一行中书写,但各命令之间要以“;”分隔开来,执行时按从左到右的顺序

7、依次执行。除了使用“;”连接命令之外,还可以使用逻辑与(“&”)运算符和逻辑或运算符(“|”)连接两条命令。“!”亦可用。“&”和“|”均具有短路特性。jianglinmeiubuntu:$ls one.sh&rm one.shls:cannot access one.sh:No such file or directoryjianglinmeiubuntu:$ls first.sh|touch first.shfirst.shjianglinmeiubuntu:$!ls one.sh&echo no scriptls:cannot access one.sh:No such file or

8、directoryno script3.1 基础知识9复合命令jianglinmeiubuntu:/sh$echo I am;who;|headI amjianglinmei pts/0 2012-09-23 21:58(10.8.18.212)jianglinmeiubuntu:/sh$VAR1=1jianglinmeiubuntu:/sh$(VAR1=2;echo$VAR1)2jianglinmeiubuntu:/sh$echo$VAR11jianglinmeiubuntu:/sh$VAR1=2;echo$VAR1;2jianglinmeiubuntu:/sh$echo$VAR12l用“”

9、或“()”将多条命令括起来,使其在语法上成为一条命令。l复合命令中的各个命令之间必须用分号或换行符分隔开来。如果使用“”的话,还应注意:“”后应有至少一个空格,“”前应有一个分号或换行符。l用“”括起的命令在本Shell内执行,用“()”括起的命令在一个子Shell内执行。3.1 基础知识103.2 Shell变量变量的赋值与引用jianglinmeiubuntu:/sh$str=Hello,worldjianglinmeiubuntu:/sh$echo$strHello,worldl变量用于存储数据。l由字母、数字或下划线组成,并且只能以字母或下划线开头,大小写的意义是不同的。l弱类型的语言

10、,变量存储的一切值都是字符串。但是必要的时候,只要是由数值构成的字符串,也可对其执行数值操作。l变量赋值的方式:变量名变量名=变量值变量值“=”两边不能有任何空格;当变量值中包含空格时,应为其加上引号。l引用变量:$变量名变量名lShell变量不需要预先定义,而且可以引用未赋过值的变量。11变量的赋值与引用jianglinmeiubuntu:/sh$str=world!jianglinmeiubuntu:/sh$echo Hello,$strHello,world!l在字符串中可以引用变量,使其值成为本字符串的一部分。l在变量名后面紧跟一个由非空白字符开始的字符串时,应该用花括号“”将变量名括

11、起来.jianglinmeiubuntu:/sh$position=/usr/include/jianglinmeiubuntu:/sh$cat$positiontermio.h3.2 Shell变量12变量的赋值与引用jianglinmeiubuntu:/sh$str=has_a_valuejianglinmeiubuntu:/sh$echo$strhas_a_valuejianglinmeiubuntu:/sh$unset strjianglinmeiubuntu:/sh$echo$strl清除变量的值:unset l得到变量的长度:$#变量名jianglinmeiubuntu:/sh$s

12、tr=A 22 characters stringjianglinmeiubuntu:/sh$echo length of$str is$#strlength of A 22 characters string is 223.2 Shell变量13命令替换l将一个或多个命令的执行结果赋值给变量l两种方式反引号$()jianglinmeiubuntu:/sh$str=pwd;whojianglinmeiubuntu:/sh$echo$str/home/jianglinmei/sh jianglinmei pts/1 2012-09-24 08:27(192.168.1.100)jianglinm

13、eiubuntu:/sh$position=$(pwd|who)jianglinmeiubuntu:/sh$echo$position/home/jianglinmei/sh3.2 Shell变量14变量属性声明l使用内部命令declare或typeset 限定变量的属性。l常用选项-r 只读-i整数-a数组-f函数-x导出变量jianglinmeiubuntu:/sh$declare-r SIZE=100jianglinmeiubuntu:/sh$SIZE=20-bash:SIZE:readonly variablejianglinmeiubuntu:/sh$n=20jianglinmeiu

14、buntu:/sh$n=n+30jianglinmeiubuntu:/sh$echo$nn+30jianglinmeiubuntu:/sh$declare-i njianglinmeiubuntu:/sh$n=20jianglinmeiubuntu:/sh$n=n+30jianglinmeiubuntu:/sh$echo$n503.2 Shell变量15数组变量lbash支持一维数组变量。l无须事先声明,数组的元素个数没有限制。l形式类似 C语言:赋值数组名数组名下标下标=值值引用$数组名数组名下标下标数组元素的下标由0开始编号。jianglinmeiubuntu:/sh$student0=A

15、licejianglinmeiubuntu:/sh$student1=Bobjianglinmeiubuntu:/sh$student2=Tomjianglinmeiubuntu:/sh$echo$student0Alicel组合赋值:数组名数组名=(值(值1 值值2 .值值n),各个值之间应以空格分开。jianglinmeiubuntu:/sh$ARR=(How nice a day it is.)jianglinmeiubuntu:/sh$echo$ARR1$ARR3nice day3.2 Shell变量16数组变量l引用没有带下标的数组名相当于引用下标为0的数组元素。jianglinme

16、iubuntu:/sh$echo$ARR=$ARR0How=Howjianglinmeiubuntu:/sh$echo$#ARR=$#ARR03=3l引用数组中的所有非空元素。$array_name*$array_namejianglinmeiubuntu:/sh$week=(Mon Tue Wed)jianglinmeiubuntu:/sh$week3=Thurjianglinmeiubuntu:/sh$week5=Satjianglinmeiubuntu:/sh$echo$week*Mon Tue Wed Thur Satjianglinmeiubuntu:/sh$echo$weekMon

17、 Tue Wed Thur Sat3.2 Shell变量17数组变量l获取数组中的所有非空元素的个数$#array_name*$#array_namejianglinmeiubuntu:/sh$week=(Mon Tue Wed)jianglinmeiubuntu:/sh$week6=Sunjianglinmeiubuntu:/sh$echo$#week*4jianglinmeiubuntu:/sh$echo$#week4l取消数组定义jianglinmeiubuntu:/sh$unset weekjianglinmeiubuntu:/sh$echo$week*3.2 Shell变量18变量引

18、用操作符l在引用变量时进行额外的判断或替换操作。l字符串替换$varname:-wordl如果varname存在且非空串,则返回varname的值,否则返回word。l作用作用:如果变量未定义,则取默认值。jianglinmeiubuntu:/sh$unset strjianglinmeiubuntu:/sh$echo$str:-blankblankjianglinmeiubuntu:/sh$str=some contentjianglinmeiubuntu:/sh$echo$str:-blanksome content3.2 Shell变量19l字符串替换$varname:=wordl如果v

19、arname存在且非空串,则返回varname的值,否则将varname的值设为word,并返回word。l作用作用:如果变量未定义,则取默认值。jianglinmeiubuntu:/sh$unset strjianglinmeiubuntu:/sh$echo$str:=blankblankjianglinmeiubuntu:/sh$echo$strblankjianglinmeiubuntu:/sh$str=some contentjianglinmeiubuntu:/sh$echo$str:=blanksome content3.2 Shell变量变量引用操作符20变量引用操作符l字符串替

20、换$varname:+wordl如果varname存在且非空串,则返回word的值,否则返回空串。l作用作用:测试变量是否存在。jianglinmeiubuntu:/sh$unset strjianglinmeiubuntu:/sh$echo$str:+not blankjianglinmeiubuntu:/sh$str=some contentjianglinmeiubuntu:/sh$echo$str:+not blanknot blank3.2 Shell变量21变量引用操作符l字符串替换$varname:?messagel如果varname存在且非空串,则返回varname的值,否则输

21、出message,并退出当前脚本程序。l作用作用:捕捉变量未定义导致的错误。jianglinmeiubuntu:/sh$cat novar.sh#!/bin/bashecho$str:?no parameterecho last sentencejianglinmeiubuntu:/sh$bash novar.shnovar.sh:行行 2:str:no parameter四种字符串替换格式中,每个冒号都是可选的。如果省略冒号,则判断“varname是否存在”,而不论是否非空。jianglinmeiubuntu:/sh$str=jianglinmeiubuntu:/sh$echo$str-no

22、t existjianglinmeiubuntu:/sh$unset strjianglinmeiubuntu:/sh$echo$str-not existnot exist3.2 Shell变量22变量引用操作符l模式匹配替换模式是指含有通配符的字符串(*,?,)。$varname#patternl如果pattern匹配varname的头部,则删除最短匹配部分,并返回剩余部分,varname本身不变。jianglinmeiubuntu:/sh$filepath=/home/alice/major.minor.extjianglinmeiubuntu:/sh$echo$filepath#/*/

23、alice/major.minor.extjianglinmeiubuntu:/sh$echo$filepath/home/alice/major.minor.ext$varname#patternl如果pattern匹配varname的头部,则删除最长匹配部分,并返回剩余部分,varname本身不变。jianglinmeiubuntu:/sh$filepath=/home/alice/major.minor.extjianglinmeiubuntu:/sh$echo$filepath#/*/major.minor.ext3.2 Shell变量23变量引用操作符l模式匹配替换$varname%

24、patternl如果pattern匹配varname的尾部,则删除最短匹配部分,并返回剩余部分,varname本身不变。jianglinmeiubuntu:/sh$filepath=/home/alice/major.minor.extjianglinmeiubuntu:/sh$echo$filepath%.*/home/alice/major.minor$varname%patternl如果pattern匹配varname的尾部,则删除最长匹配部分,并返回剩余部分,varname本身不变。jianglinmeiubuntu:/sh$filepath=/home/alice/major.min

25、or.extjianglinmeiubuntu:/sh$echo$filepath%.*/home/alice/major3.2 Shell变量24变量引用操作符l模式匹配替换$variable/pattern/string$variable/pattern/stringl将varname的最长匹配部分替换为string,并返回替换后的串,varname本身不变。l第一种格式仅替换第一次匹配的子串,第二种格式会替换所有匹配的子串。l如果模式以“#”开头,则意为必须匹配varname的首部,如果模式以“%”开头,则意为必须匹配varname的尾部。l如果string为空串,匹配部分将被删除。l如

26、果varname为“”或“*”,操作将被依次用于每个位置参数,并且扩展为结果列表。jianglinmeiubuntu:/sh$filepath=/home/alice/major.minor.extjianglinmeiubuntu:/sh$echo$filepath/alice/tom/home/tom/major.minor.extjianglinmeiubuntu:/sh$echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME/binjianglinmeiubu

27、ntu:/sh$echo-e$PATH/:/n/usr/local/sbinn/usr/local/binn/usr/sbinn/usr/binn/sbinn/binn/usr/gamesn$JAVA_HOME/binjianglinmeiubuntu:/sh$echo-e$PATH/:/n/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin/usr/games$JAVA_HOME/bin3.2 Shell变量25位置参数和特殊变量l位置参数 也称位置变量。运行Shell脚本程序时,命令行Shell传递给脚本的参数,以及在Shell脚本

28、程序中调用函数时传递给函数的参数。位置变量的名称是以0,1,2,.这些整数命名的,相应地以$0,$1,$2,等进行引用。0对应命令名(脚本名),1对应第一个实参,2对应第二个实参,.。cmdp1p2p3p4 p10 p11$0$1$2$3$4$10$113.2 Shell变量263.2 Shell变量位置参数和特殊变量l特殊变量“$*”和“$”的区别l只在加了双引号后$*和$才有区别。l”$”表示的是引用所有参数,相当于“$1”“$2”.“$N”,即 N个以空格分隔的字符串。l“$*”表示引用所有参数连接在一起(中间以空格分隔)的字符串。l如果用于数组,”$数组名”表示引用数组整体的各个元素,

29、”$数组名*”表示引用所有数组元素连接在一起(中间以空格分隔)的字符串。特殊变量特殊变量含义含义$#命令行上参数的个数,但不包含shell脚本名本身。$*以一个单字符串显示向脚本程序传递的所有参数,不含$0。$从参数1开始,显示向脚本程序传递的所有参数,不含$0。如果放在双引号中进行扩展,则”$”与”$1”$2”$3”等效。$?上一条命令执行后的返回值(即“退出状态”),一个10进制整数,见3.1.5节的介绍。$运行脚本的当前进程的进程号。$!上一个后台命令对应的进程号。$-由当前shell设置的执行标志名组成的字符串。27位置参数和特殊变量l用法Program 3-3:posvar.sh#!

30、/bin/bashecho Parameter number:$#echo All digit variables:$0$1$2$3$4$5$6$7$8$9$10echo$*:$*echo$:$jianglinmeiubuntu:/sh$chmod u+x posvar.shjianglinmeiubuntu:/sh$./posvar.sh 1 2 3 4 5 6 7 8 9 10Parameter number:10All digit variables:./posvar.sh 1 2 3 4 5 6 7 8 9 10$*:1 2 3 4 5 6 7 8 9 10$:1 2 3 4 5 6

31、7 8 9 103.2 Shell变量28位置参数和特殊变量l设置位置参数使用内部命令“set”Program 3-4:setposvar.sh#!/bin/bashset learning linux programecho$0$1$2$3ianglinmeiubuntu:/sh$bash setposvar.shsetposvar.sh learning linux program3.2 Shell变量29位置参数和特殊变量l移动位置参数使用内部命令“shift”.原来的$2的值赋给$1(原$1的值永远丢失),原来的$3的值赋给$2,。会使参数个数少一,即$#的值会减一。Program 3

32、-5:shiftposvar.sh#!/bin/bashset learning linux programecho parameter number:$#,there are:echo$1$2$3shiftecho after shifted,parameter number:$#,there are:echo$1$2$3jianglinmeiubuntu:/sh$bash shiftposvar.sh one two threeparameter number:3,there are:one two threeafter shifted,parameter number:2,there a

33、re:two threeshift:移动n次。3.2 Shell变量30read命令l利用read命令可编写用户相交互式的脚本程序。格式read var1 var2 输入数据时,数据项间应以空格或制表符作(IFS)为分隔符。变量个数(V)和数据个数(D)之间可能出现下面三种情况:lV=NV1=D1,V2=D2,lV N没有数据与之对应的变量取空串.lV 2;echo$?0jianglinmeiubuntu:/sh$2 3;echo$?13.3 控制结构353.3 控制结构条件测试ltest文件属性测试jianglinmeiubuntu:/sh$-d/tmp;echo$?0jianglinmei

34、ubuntu:/sh$-w/etc/passwd;echo$?1参数参数功能功能-d文件名若文件存在并且是目录文件,则测试条件为真-e 文件名若文件存在,则测试条件为真-f 文件名若文件存在并且是普通文件,则测试条件为真-L 文件名若文件存在并且是一个符号连接,则测试条件为真-p文件名若文件存在并且是一个命名管道,则测试条件为真-r文件名若文件存在并且是用户可读的,则测试条件为真-s文件名若文件存在并且文件的长度大于0(即非空),则测试条件为真-w文件名若文件存在并且是用户可写的,则测试条件为真-x文件名若文件存在并且是用户可执行的,则测试条件为真-O 文件名若当前用户是文件的所有者,则测试条

35、件为真-G 文件名若当前用户的组ID匹配文件的组ID,则测试条件为真文件1 nt 文件2若文件1比文件2新,则测试条件为真文件1 ot 文件2若文件1比文件2旧,则测试条件为真36条件测试ltest字符串测试jianglinmeiubuntu:/sh$unset strjianglinmeiubuntu:/sh$str;echo$?1jianglinmeiubuntu:/sh$-n$str;echo$?1jianglinmeiubuntu:/sh$-z$str;echo$?0参数参数功能功能-z str 如果字符串str的长度为0,即空串,则测试条件为真-n str如果字符串str的长度大于0

36、,即非空串,则测试条件为真str如果字符串str不是空字符串,则测试条件为真sl=s2如果sl等于s2,则测试条件为真,“=”也可以用“=”代替s1!=s2如果s1不等于s2,则测试条件为真s1 s2如果按字典顺序s1在s2之后,则测试条件为真3.3 控制结构37条件测试ltest数值(整数)测试jianglinmeiubuntu:/sh$3-eq 3;echo$?0jianglinmeiubuntu:/sh$30-lt 9;echo$?1参数参数功能功能n1 eq n2如果整数n1等于n2,则测试条件为真n1 ne n2如果整数n1不等于n2,则测试条件为真n1 lt n2如果n1小于n2,

37、则测试条件为真n1 le n2如果n1小于或等于n2,则测试条件为真n1 gt n2如果n1大于n2,则测试条件为真n1 ge n2如果n1大于或等于n2,则测试条件为真3.3 控制结构38条件测试ltest逻辑测试用法用法逻辑逻辑 expr1 a expr2 与.expr1 o expr2 或.test1&test2与.test2|test2或.!expr 非.!test非.(expr)改变优先级.jianglinmeiubuntu:/sh$(a=$HOME“o 3-lt 4);echo$?0jianglinmeiubuntu:/sh$a=$HOME|3-lt 4;echo$?0jiangl

38、inmeiubuntu:/sh$!3-lt 4;echo$?1l优先级“()”“条件测试运算符”“!”“-a”“-o”3.3 控制结构39条件测试llet命令专门执行整数算术运算的命令。形式:let or(expr)表达式建议用双引号括起,当表达式中有shell的特殊字符(如”|”)时,必须用双引号将其括起来。操作数只能是整数(按长整数进行求值)。命名的参数在算术表达式中可直接用名称访问,前面不用带“$”符号,也不需要对算术表达式中的操作符进行转义。如果算术表达式求值为0,则设置退出状态为1;如果求值为非0值,则退出状态为0。使用“$(expr)”获得表达式的值而不是退出状态。jianglin

39、meiubuntu:/sh$let x=2 y=2*3 z=y*3;echo$?$x$y$z0 2 8 24jianglinmeiubuntu:/sh$(w=(y/x)+(+x)&0 x0f);echo$?$x$y$w0 3 8 16jianglinmeiubuntu:/sh$(w=(y/x)+(+x)&0 x0f);echo$?$x$y$w0 4 8 13jianglinmeiubuntu:$let v=6|5;echo$v7jianglinmeiubuntu:$let v=6|5-bash:let:=:syntax error:operand expected(error token is

40、=)5:command not foundjianglinmeiubuntu:$(v=6|5);echo$v7jianglinmeiubuntu:/sh$v=$(6+9);echo$?;echo$v015 3.3 控制结构40条件测试 同“”,但特殊字符不需要转义。jianglinmeiubuntu:$(-d$HOME)&(-w$HOME)&echo home is a writable directoryhome is a writable directoryjianglinmeiubuntu:/sh$abc def.d,x-=aabc*?d*;echo$?0jianglinmeiubunt

41、u:/sh$abc def c=aabc*?d*;echo$?1jianglinmeiubuntu:/sh$abc def d,x=aabc*?d*;echo$?1在使用=或!=操作符时,复合命令“”可在字符串上进行模式匹配。3.3 控制结构41ifl语法if 测试条件1then命令组1elif 测试条件2then命令组2else命令xfiprogram 3-6:if.sh#!/bin/bashecho type in the user name.read userif grep$user/etc/passwd /tmp/null&who|grep$user;then echo$user ha

42、s logged in the system.cp/tmp/null/me.tmp rm/tmp/nullelse echo$user has not logged in the system.filif语句唯一可测试的内容是命令退出状态,也就是说,测试条件是一或多条命令。if 测试条件1;then命令组1elif 测试条件2;then命令组2else命令xfijianglinmeiubuntu:/sh$source if.shtype in the user name.jianglinmeijianglinmei pts/0 2012-09-25 10:23(10.8.18.212)jian

43、glinmei has logged in the system.jianglinmeiubuntu:/sh$source if.shtype in the user name.alicealice has not logged in the system.3.3 控制结构42casel语法program 3-7:case.sh#!/bin/bashecho please chose either 1,2 or3echo 1ls-l$1echo 2cat$1echo 3quitread responsecase$response in1)ls-l$1;2)cat$1;3)echo good b

44、yeesacl每个模式字符串后面可有一条或多条命令,其中最后一条命令必须以两个分号(即;)结束。lcase的退出状态(返回值)是整个结构中最后执行的那个命令的退出状态,若没有执行任何命令,则退出状态为零。3.3 控制结构case 字符串 in模式字符串1)命令.命令;模式字符串2)命令命令;模式字符串n)命令命令;esac43casejianglinmeiubuntu:/sh$source case.sh first.shplease chose either 1,2 or31ls-l first.sh2cat first.sh3quit1-r-x-x-wx 1 jianglinmei jia

45、nglinmei 42 2012-09-22 15:18 first.shjianglinmeiubuntu:/sh$source case.sh first.shplease chose either 1,2 or31ls-l first.sh2cat first.sh3quit2#!/bin/bashcd/tmpecho Hello,world!jianglinmeiubuntu:/sh$source case.sh first.shplease chose either 1,2 or31ls-l first.sh2cat first.sh3quit3good bye3.3 控制结构44c

46、asel模式字符串中可以使用通配符program 3-8:case_pattern.sh#!/bin/bashcase$1 in-f)echo find first.sh find -name first.sh;-l)echo ls first.sh ls-l first.sh;*)echo quit;esacl一个模式字符串中可包含多个模式,各模式之间以竖线(|)隔开,各模式是“或”的关系。jianglinmeiubuntu:/sh$source case_pattern.sh-ffind first.sh/home/jianglinmei/sh/first.shjianglinmeiubu

47、ntu:/sh$source case_pattern.sh-othersquitprogram 3-9:case_multi.sh#!/bin/bashread choicecase$choice intime|date)echo the time is date.;dir|path)echo current directory is pwd.;*)echo bad argument.;esacjianglinmeiubuntu:/sh$source case_multi.shdircurrent directory is/home/jianglinmei/sh.jianglinmeiubu

48、ntu:/sh$source case_multi.shdatethe time is Mon Apr 15 16:30:20 CST 2013.3.3 控制结构45whilel语法while 测试条件do 命令表doneprogram 3-10:while.sh#!/bin/bashwhile$1 do if -f$1;then echo-e ndisplay:$1 cat$1 else echo$1 is not a file name.fi shiftdonel测试条件的使用方式和”if”语句一样。while 测试条件;do 命令表donejianglinmeiubuntu:/sh$so

49、urce while.sh first.sh posvar.shdisplay:first.sh#!/bin/bashcd/tmpecho Hello,world!display:posvar.sh#!/bin/bashecho Parameter number:$#echo All digit variables:$0$1$2$3$4$5$6$7$8$9$10$11echo$*:$*echo$:$3.3 控制结构46untill语法until 测试条件do 命令表doneprogram 3-11:until.sh#!/bin/bashuntil -z$2;do cp$1$2 shift 2d

50、oneif -n$1 ;then echo bad parameter!fil同“while”,但循环在测试条件为真时结束 until 测试条件;do 命令表donejianglinmeiubuntu:/sh$source until.sh if.sh if2.sh while.sh while2.shjianglinmeiubuntu:/sh$ls*2.shif2.sh while2.sh3.3 控制结构47forl两种使用方式:值表方式&算术表达式方式l值表方式语法program 3-12:for.sh#!/bin/bashfor day in Monday Wednesday Frida

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Linux环境编程3Linux-Shell编程课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|