Shell应用.ppt_第1页
Shell应用.ppt_第2页
Shell应用.ppt_第3页
Shell应用.ppt_第4页
Shell应用.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linuxShell程序设计,青海师范大学 计算机学院,本章重点,shell编程基础 shell表达式的计算 shell的三种程序结构 能编写一些小的程序,了解shell,什么叫做shell? Shell就像一个壳层,这个壳层介于用户和操作系统之间,负责将用户的命令解释为操作系统可以接收的低级语言,并将操作系统响应的信息以用户可以了解的方式来显示。 shell的种类 /bin/bash /bin/sh /usr/bin/csh /usr/bin/ksh /usr/bin/csh /bin/zsh,Shell编程基础,shell程序是一个包含UNIX命令的普通文件,这个文件的权限应该可读和可执行

2、 在shell提示符下键入文件名就可以执行shell程序 shell会解释并执行shell程序中的命令 注意,和普通可执行程序一样,执行shell程序的时候要么指定完全路径名,或者将其放在PATH环境变量指定的路径列表中,创建shell程序的过程,利用编辑器(例如vi mcedit等)编辑shell程序文件 将文件添加可执行属性chmod a+x xxx.sh 执行shell程序./xxx.sh 注释:在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。,变量,与C语言不同,在shell编程中,不需要对变量进行声明就可使用。格式: 变量=值(等号两侧不能有空格) eg:,注:$是

3、为了应用变量而采取的!详细请见P199,计算表达式expr,expr命令一般用于整数值,但也可用于字符串。 一般格式为: expr argument operator argument 使用 $(算术表达式) 的方式可以进行算术运算 eg: 注意:运算符左右都有空格使用乘号时,必须用反斜线(单引号或双引号)屏蔽其特定含义。因为shell可能会误解显示*的意义。,数值表达式let,和expr功能相同,但格式为 let arg1arg2. 其中,中括号表示可以有多个参数,argn(n=1,2,) 为表达式。运算符与操作符不能有空格。 当表达式中含有、)将它们隔开,例子,问题 为什么会出现“Comm

4、and not find.”之后,结果却可正确显示?请同学们思考,一个嵌套的if语句,以下两个例子请大家自己尝试! if “$X” lt 10 ; then echo X is less than 10else if “$X” gt 10 ; then echo X is greater than 10 else echo X is equal to 10 fifi,也可以使用一种简写形式,if “$X” lt 10 ; then echo X is less than 10elif “$X” gt 10 ; then echo X is greater than 10else echo X

5、is equal to 10fi,case结构,语法:case 条件 in 模式A) 语句序列A ; 模式B) 语句序列B ; .esac,几点解释,case结构提供实现多路分支的一种简便的方法,同C语言用法相似 分支选择是顺序地对条件和所提供的模式进行比较,如果一致,就执行后面的语句序列,然后跳转到esac,并执行后续的语句此点不同于C语言 Case结构模式的格式: *可以匹配任何字符串和字符,包括空字符 ? 可以匹配任何单个的字符 . 匹配任何一个括号中出现的字符 | 匹配前面的字符串或者后面的字符串,eg:,while/untill语句,语法: while/untill 语句序列Ado

6、语句序列Bdone,例子,注意,和if类似,其中的任一语句序列都可以包含多条语句,如果这些语句在一行上,应该用分号(;)将它们分隔开,也应该用分号将语句和do、done分隔开 while结构实现判断条件,再执行循环体,所以有可能循环体一次也不执行 until语句和while语句只有在测试条件上是相反的,其他的都一样,for语句,语法:for var in listdo 语句序列Adone,注意,for语句是一种非常灵活的循环结构,它能够让循环贯穿任何能产生的列表。 而使用shell替换可以以多种方式产生列表 比起使用while和shift来,使用for处理命令行参数是一种更加简单、更加常用的方

7、式,break和continue,break和continue提供了一种控制循环过程方式 如果在循环语句的循环体中执行break语句,则直接结束整个循环语句,继续执行循环语句后的语句 如果在循环语句的循环体中执行continue语句,则结束当前的循环体,开始下一个循环过程,break,continue,exit命令,语法:exit 数字 功能:结束当前shell程序,并且指定程序结束返回值,break和exit,break只能用在循环语句中,用于终止一个循环 exit可以出现在任何地方,用于终止一个shell程序,Shell函数,函数是一种脚本内脚本 可以通过函数的名字来定义一块shell代码

8、,以便在以后方便地调用 使用函数而不是一个新的脚本可以大大加快处理速度 使用函数可以方便地组织程序,两种函数格式,function 函数名 . 函数名() .,调用函数,调用函数就像调用一个shell脚本或者命令一样,直接在写函数名字,如果需要,还可以跟参数 shell查找命令的顺序是:别名,关键字,函数,内部命令,脚本和可执行程序 所以函数可能屏蔽外部脚本或者程序,函数的参数,可以给函数传递参数 在函数中处理和在普通脚本中处理参数基本一样,使用$1等位置参数,或者$*,$#等 应该注意,在函数中的$0并不表示函数名,而仍然是脚本的文件名,命令/函数的返回值,每一个命令/函数都有一个返回值,用于标示命令执行的结果状态 可以通过查看变量 $? 来获取前一个命令/函数的返回值 一般来说,返回 0 表示正常结束返回 非0 表示出现错误而终止,例子,函数的局部变量,如果不作特殊说明,在函数内访问的变量是整个脚本共享的变量 如果要定义只在函数内有效的局部变量,则需要使用local语句,例子,谢谢!,了解:shift命令,语法:shift n 功能:将$*中的参数序

温馨提示

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

评论

0/150

提交评论