书签 分享 收藏 举报 版权申诉 / 50
上传文档赚钱

类型Shell应用.ppt

  • 上传人(卖家):hwpkd79526
  • 文档编号:6158198
  • 上传时间:2023-06-04
  • 格式:PPT
  • 页数:50
  • 大小:2.53MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Shell应用.ppt》由用户(hwpkd79526)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Shell 应用
    资源描述:

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

    2、种类 /bin/bash /bin/sh /usr/bin/csh /usr/bin/ksh /usr/bin/csh /bin/zshShell编程基础编程基础shell程序是一个包含程序是一个包含UNIX命令的普通文件,命令的普通文件,这个文件的权限应该可读和可执行这个文件的权限应该可读和可执行在在shell提示符下键入文件名就可以执行提示符下键入文件名就可以执行shell程序程序shell会解释并执行会解释并执行shell程序中的命令程序中的命令注意,和普通可执行程序一样,执行注意,和普通可执行程序一样,执行shell程序的时候要么指定完全路径名,或者将其程序的时候要么指定完全路径名,或

    3、者将其放在放在PATH环境变量指定的路径列表中环境变量指定的路径列表中创建创建shell程序的过程程序的过程利用编辑器利用编辑器(例如例如vi mceditvi mcedit等等)编辑编辑shellshell程序文件程序文件将文件添加可执行属性将文件添加可执行属性chmod a+x xxx.shchmod a+x xxx.sh执行执行shellshell程序程序./xxx.sh./xxx.sh注释注释:在进行在进行shellshell编程时,以编程时,以#开头的句子表示注开头的句子表示注释,直到这一行的结束。释,直到这一行的结束。变量变量 与与C语言不同语言不同,在在shell编程中,不需要对

    4、变量进编程中,不需要对变量进行声明就可使用。格式:行声明就可使用。格式:变量变量=值(等号两侧不能有空格)值(等号两侧不能有空格)eg:注:注:$是为了应用变量而采取的!详细请见是为了应用变量而采取的!详细请见P199计算表达式计算表达式exprexpr命令一般用于整数值,但也可用于字符串。命令一般用于整数值,但也可用于字符串。一般格式为:一般格式为:expr argument operator argument使用使用$(算术表达式算术表达式)的方式可以进行算术运算的方式可以进行算术运算eg:注意:运算符左右都有空格使用乘号时,必须用反斜线注意:运算符左右都有空格使用乘号时,必须用反斜线(单

    5、引单引号或双引号号或双引号)屏蔽其特定含义。因为屏蔽其特定含义。因为shell可能会误解显示可能会误解显示*的意义。的意义。数值表达式数值表达式let 和和expr功能相同,但格式为功能相同,但格式为 let arg1arg2.其中,中括号表示可以有多个参数,其中,中括号表示可以有多个参数,argn(n=1,2,)为表达式。运算符与操作符不能有空格。为表达式。运算符与操作符不能有空格。当表达式中含有当表达式中含有、&、|等特殊符号时,需用引号(单等特殊符号时,需用引号(单双都可),或用反闲杠(双都可),或用反闲杠()放在特殊符号的前面!)放在特殊符号的前面!test命令命令功能:功能:测试指定

    6、条件,并将结果通过返回值呈现测试指定条件,并将结果通过返回值呈现语法格式:语法格式:test 表达式表达式 或或 表达式表达式 作用:作用:广泛用于控制结构中的条件判断广泛用于控制结构中的条件判断test命令的作用类型命令的作用类型test命令可以作用在命令可以作用在3类对象上面类对象上面其一是数字测试其一是数字测试其二是字符串测试其二是字符串测试其三是文件测试其三是文件测试数字测试数字测试可以对变量以数字形式进行关系比较可以对变量以数字形式进行关系比较-le 小于等于小于等于 -gt 大于大于-ge 大于等于大于等于 -eq 等于等于-ne 不等于不等于注:注:0表示真,表示真,1表示假表示

    7、假字符串测试字符串测试也可以对字符串进行关系比较也可以对字符串进行关系比较-z string 字符串长度为字符串长度为0 -n string 字符串长度不为字符串长度不为0(-n可省略不写)可省略不写)文件比较文件比较-f/-d/-w/./filename 测试测试/./filename 是否是普通文件是否是普通文件/目录目录/可写可写逻辑与逻辑与-a:同:同C语言中的语言中的&逻辑或逻辑或-o:同:同C语言中的语言中的|逻辑非!:同逻辑非!:同C语言相同语言相同 read命令命令语法:语法:read 变量变量1 变量变量2.功能:功能:从标准输入读入值,并赋给指定变量。从标准输入读入值,并赋

    8、给指定变量。输入的值之间用空白字符分隔开,分别赋给对应的变输入的值之间用空白字符分隔开,分别赋给对应的变量,如果变量多于值的数量,多余的变量设置为空,量,如果变量多于值的数量,多余的变量设置为空,如果值的数量多于变量,多余的值将一并赋给最后一如果值的数量多于变量,多余的值将一并赋给最后一个变量个变量注意注意read是一个交互命令,只有当是一个交互命令,只有当shell执行执行read的时候才会等待用户从标准输入键入数的时候才会等待用户从标准输入键入数据据read命令不会给出任何提示,所以一般说来,命令不会给出任何提示,所以一般说来,应该先用应该先用echo命令提示用户应该输入数据了命令提示用户

    9、应该输入数据了read命令一次读入整行,不能用一个命令一次读入整行,不能用一个read命令读入一行的一部分,而用另外一个命令读入一行的一部分,而用另外一个read命令读入该行的剩余部分命令读入该行的剩余部分shell程序的构成程序的构成和普通的程序设计语言一样,包含三种控制和普通的程序设计语言一样,包含三种控制结构结构顺序结构顺序结构分支结构分支结构循环结构循环结构传递参数给传递参数给shell程序程序传递参数给传递参数给shell程序的方法之一是通过环程序的方法之一是通过环境变量境变量注意注意shell变量和变量和环境变量环境变量的区别的区别参数传递方式:参数传递方式:export var1

    10、=abcdefg调用调用shell程序程序 什么是环境变量什么是环境变量当系统在运行的时候,因为工作的需求,需要用到许多的信息,当系统在运行的时候,因为工作的需求,需要用到许多的信息,比如:比如:但前登但前登录的用户是谁?用户输入的命令去那里找对应的程序?用户的命令历史记录最大是录的用户是谁?用户输入的命令去那里找对应的程序?用户的命令历史记录最大是多少?当前用户使用的多少?当前用户使用的SHELL是什么?等等等等。那么计算机需要这些信息的时候是什么?等等等等。那么计算机需要这些信息的时候又去那里取得呢?这就是环境变量的根本作用了。他提供给计算机常用的信息。又去那里取得呢?这就是环境变量的根本

    11、作用了。他提供给计算机常用的信息。我们经常能见到的,熟悉的环境变量我们经常能见到的,熟悉的环境变量PATH:可执行文件(命令)的存放目录:可执行文件(命令)的存放目录HOME:用户家目录:用户家目录HISTSIZE是指保存历史命令记录的条数。是指保存历史命令记录的条数。LOGNAME是指当前用户的登录名。是指当前用户的登录名。HOSTNAME是指主机的名称,许多应用程序如果要用到主机名的话,通常是从是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。这个环境变量中来取得的。SHELL是指当前用户用的是哪种是指当前用户用的是哪种Shell。LANG/LANGUGE是

    12、和语言相关的环境变量,使用多种语言的用户可以修改此环是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。境变量。MAIL是指当前用户的邮件存放目录。是指当前用户的邮件存放目录。显示环境变量显示环境变量code:1echo$HOME/code:1清除环境变量清除环境变量WELCOME code:1$unset$WELCOME/code:1shell程序的参数程序的参数传递参数给传递参数给shell程序的另外一种方法是通过命令程序的另外一种方法是通过命令行参数行参数在在shell程序中,可以使用程序中,可以使用$加数字的变量来引用加数字的变量来引用命令行参数命令行参数$0表示执行脚本的函

    13、数名。表示执行脚本的函数名。$1,.,$9,$10,.$n 表示传递给函数的第表示传递给函数的第n个参数。个参数。$#表示传递给函数的参数个数表示传递给函数的参数个数$*$表示传递给函数的所有参数,区别在表示传递给函数的所有参数,区别在于前者把所有参数作为一个整体,后者在于于前者把所有参数作为一个整体,后者在于把所欲参数看做拥有多个参数的集合,可以把所欲参数看做拥有多个参数的集合,可以单独访问每个参数单独访问每个参数由于使用命令行参数的位置来引用,所以命由于使用命令行参数的位置来引用,所以命令行参数也称为位置参数令行参数也称为位置参数注:注:$0这个参数不出现在这个参数不出现在$*中中if分支

    14、语句分支语句语法格式:语法格式:if then elif 条件条件2 then 命令命令B else 命令命令C fi 注意注意:条件和命令都可以是多条语句,如果是多条语句,条件和命令都可以是多条语句,如果是多条语句,那么应该写在不同行上,或者在同一行,但用分号那么应该写在不同行上,或者在同一行,但用分号(;)将它将它们隔开们隔开例子例子问题问题 为什么会出现为什么会出现“Command not find.”之后,结果却可正确显示?请同学们思考之后,结果却可正确显示?请同学们思考一个嵌套的一个嵌套的if语句语句以下两个例子请大家自己尝试!以下两个例子请大家自己尝试!if “$X”lt 10;t

    15、hen 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 is equal to 10ficase结构结构语法:语法:case 条件条件 in 模式模式A)语句序列语句序列A ;模式模式B)语句序列语句序列B

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

    17、中出现的字符|匹配前面的字符串或者后面的字符串匹配前面的字符串或者后面的字符串eg:while/untill语句语句语法:语法:while/untill 语句序列语句序列Ado 语句序列语句序列Bdone例子例子注意注意和和if类似,其中的任一语句序列都可以包含类似,其中的任一语句序列都可以包含多条语句,如果这些语句在一行上,应该用多条语句,如果这些语句在一行上,应该用分号分号(;)将它们分隔开,也应该用分号将语将它们分隔开,也应该用分号将语句和句和do、done分隔开分隔开while结构实现判断条件,再执行循环体,结构实现判断条件,再执行循环体,所以有可能循环体一次也不执行所以有可能循环体一

    18、次也不执行until语句和语句和while语句只有在测试条件上语句只有在测试条件上是相反的,其他的都一样是相反的,其他的都一样for语句语句语法:语法:for var in listdo 语句序列语句序列Adone注意注意for语句是一种非常灵活的循环结构,它能语句是一种非常灵活的循环结构,它能够让循环贯穿任何能产生的列表。够让循环贯穿任何能产生的列表。而使用而使用shell替换可以以多种方式产生列表替换可以以多种方式产生列表比起使用比起使用while和和shift来,使用来,使用for处理处理命令行参数是一种更加简单、更加常用的方命令行参数是一种更加简单、更加常用的方式式break和和con

    19、tinuebreak和和continue提供了一种控制循环过提供了一种控制循环过程方式程方式如果在循环语句的循环体中执行如果在循环语句的循环体中执行break语句,语句,则直接结束整个循环语句,继续执行循环语则直接结束整个循环语句,继续执行循环语句后的语句句后的语句如果在循环语句的循环体中执行如果在循环语句的循环体中执行continue语句,则结束当前的循环体,开始下一个循语句,则结束当前的循环体,开始下一个循环过程环过程breakbreak假假真真continuecontinue假假真真exit命令命令语法:语法:exit 数字数字功能:功能:结束当前结束当前shell程序,并且指定程序结束

    20、返程序,并且指定程序结束返回值回值break和和exitbreak只能用在循环语句中,用于终止一个只能用在循环语句中,用于终止一个循环循环exit可以出现在任何地方,用于终止一个可以出现在任何地方,用于终止一个shell程序程序Shell函数函数函数是一种脚本内脚本函数是一种脚本内脚本可以通过函数的名字来定义一块可以通过函数的名字来定义一块shell代码,代码,以便在以后方便地调用以便在以后方便地调用使用函数而不是一个新的脚本可以大大加快使用函数而不是一个新的脚本可以大大加快处理速度处理速度使用函数可以方便地组织程序使用函数可以方便地组织程序两种函数格式两种函数格式function 函数名函数

    21、名 .函数名函数名().调用函数调用函数调用函数就像调用一个调用函数就像调用一个shell脚本或者命令脚本或者命令一样,直接在写函数名字,如果需要,还可一样,直接在写函数名字,如果需要,还可以跟参数以跟参数shell查找命令的顺序是:查找命令的顺序是:别名,关键字,函数,内部命令,脚本和可别名,关键字,函数,内部命令,脚本和可执行程序执行程序所以函数可能屏蔽外部脚本或者程序所以函数可能屏蔽外部脚本或者程序函数的参数函数的参数可以给函数传递参数可以给函数传递参数在函数中处理和在普通脚本中处理参数基本在函数中处理和在普通脚本中处理参数基本一样,使用一样,使用$1等位置参数,或者等位置参数,或者$*

    22、,$#等等应该注意,在函数中的应该注意,在函数中的$0并不表示函数名,并不表示函数名,而仍然是脚本的文件名而仍然是脚本的文件名命令命令/函数的返回值函数的返回值每一个命令每一个命令/函数都有一个返回值,用于标示函数都有一个返回值,用于标示命令执行的结果状态命令执行的结果状态可以通过查看变量可以通过查看变量$?来获取前一个命令来获取前一个命令/函数的返回值函数的返回值一般来说,返回一般来说,返回 0 表示正常结束表示正常结束返回返回 非非0 表示出现错误而终止表示出现错误而终止例子例子函数的局部变量函数的局部变量如果不作特殊说明,在函数内访问的变量是如果不作特殊说明,在函数内访问的变量是整个脚本

    23、共享的变量整个脚本共享的变量如果要定义只在函数内有效的局部变量,则如果要定义只在函数内有效的局部变量,则需要使用需要使用local语句语句例子例子谢谢!谢谢!了解:了解:shift命令命令语法:语法:shift n功能:功能:将将$*中的参数序列向左移动中的参数序列向左移动n个位置,并且个位置,并且将将$#的值减少的值减少n作用:作用:利用同样的程序代码处理多个参数利用同样的程序代码处理多个参数注意注意shift命令是命令是shell内部命令内部命令shift命令不会影响命令不会影响$0shift命令一旦完成,被移出的参数就会丢命令一旦完成,被移出的参数就会丢失,如果需要,应该在失,如果需要,应该在shift之前保存这些之前保存这些参数参数$1等位置变量也同时会受到影响等位置变量也同时会受到影响

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Shell应用.ppt
    链接地址:https://www.163wenku.com/p-6158198.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库