ImageVerifierCode 换一换
格式:PPT , 页数:61 ,大小:497.50KB ,
文档编号:5192201      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5192201.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

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

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

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

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


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