第三讲 Shell编程1.ppt

上传人:qwe****56 文档编号:80597460 上传时间:2023-03-23 格式:PPT 页数:43 大小:490KB
返回 下载 相关 举报
第三讲 Shell编程1.ppt_第1页
第1页 / 共43页
第三讲 Shell编程1.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《第三讲 Shell编程1.ppt》由会员分享,可在线阅读,更多相关《第三讲 Shell编程1.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、主要内容nShell简介简介nShell基本语法基本语法nShell脚本基本编程脚本基本编程nShell脚本高级部分脚本高级部分Shell简介Shell概念n什么是什么是Shell?Shell是一个是一个命令解释器命令解释器,可以用来启,可以用来启动、停止、编写程序。它是操作系统最动、停止、编写程序。它是操作系统最外面一层,外面一层,负责管理用户与操作系统之负责管理用户与操作系统之间的交互间的交互,例如等待用户输入,向操作,例如等待用户输入,向操作系统解释用户的输入,以及处理各种操系统解释用户的输入,以及处理各种操作系统的输出结果。作系统的输出结果。Shell简介Shell概念nShell是用

2、户和是用户和UNIX/Linux操作系统操作系统内核程序间的一个内核程序间的一个接口接口。用户shell操作系统结果命令Shell简介Shell种类及历史nBourne shell(sh):Stephen Bourne,1979nBourne Again Shell(bash)nC shell(csh):Billjoy,70年代末期年代末期nKorn Shell(ksh):DavidKorn,80年代年代中期中期Shell简介Linux Shelln支持支持Bourne shell、C shell和和Korn shelln标准标准shell为为bash 向下兼容向下兼容Bourne shell

3、 工作控制(工作控制(job control)别名功能(别名功能(alias)命令历史命令历史(command history)命令列编辑功能命令列编辑功能 提供更丰富的变量类型、命令与控制结构提供更丰富的变量类型、命令与控制结构Shell简介Shell作用n最主要的功用:最主要的功用:解释用户在命令提示符下输入解释用户在命令提示符下输入的指令。的指令。n提供个性化的用户环境提供个性化的用户环境。通常在。通常在shell的初始化的初始化文件中完成。文件中完成。(.bash_profile、.bash_login、.bash_cshrc等等)这些特性包括:设置变量、搜这些特性包括:设置变量、搜寻

4、路径、权限、提示符等。寻路径、权限、提示符等。n解释性的程序语言解释性的程序语言。Shell程序程序命令文件。命令文件。由列在文件内的命令所构成:由列在文件内的命令所构成:UNIX命令和基命令和基本的程序结构。本的程序结构。Shell简介Shell功能n命令行解释功能命令行解释功能 Shell试图解释命令行输入的一行字符。其基本格式:试图解释命令行输入的一行字符。其基本格式:command argumentsn启动程序启动程序 启动命令行中要求的程序。实际是内核执行该程序。启动命令行中要求的程序。实际是内核执行该程序。n输入输入/输出重定向输出重定向$ls-l a.txtn管道连接管道连接 管

5、道是输入输出重定向的特例,它将命令的输出直接管道是输入输出重定向的特例,它将命令的输出直接连到另一个命令的输入。连到另一个命令的输入。$who|wc-lShell简介Shell功能n文件名置换文件名置换 比如命令:$echo*命令的执行结果如下图所示:Shell简介Shell功能n变量维护变量维护 定义变量,使用变量等。定义变量,使用变量等。n环境控制环境控制用户个人环境的设置,包括用户的用户个人环境的设置,包括用户的home目录、目录、用户终端类型及用户终端类型及PATH路径等。路径等。$LOOKUP=/usr/mydir$echo$LOOKUP/usr/mydir$echo LOOKUPL

6、OOKUPShell简介Shell功能Shell简介Shell功能nShell编程编程 将将Linux命令命令与各种与各种流程控制流程控制和和条件判条件判断断来组合命令与变量赋值,就可以进行来组合命令与变量赋值,就可以进行Shell编程。编程。Shell基本语法Shell脚本的执行nShell脚本的例子#!/bin/bashLOG_DIR=/var/log#如果使用变量,当然比把代码写死的好.cd$LOG_DIR cat/dev/null messages cat/dev/null wtmp echo Logs cleaned up.exit#指明该脚本执行需要的命令解释器定义变量执行UNIX

7、内部命令退出Shell程序Shell基本语法Shell脚本的执行n#!/bin/bash在在 Linux 系统中默认是系统中默认是 Bashn#!后边给出的路径名必须是正确的后边给出的路径名必须是正确的,否则将会否则将会出现一个错误消息出现一个错误消息,通常是通常是“Command not found”。n#!“也可以被忽略也可以被忽略,不过这样脚本无法使用不过这样脚本无法使用 shell 内建内建 的指令。的指令。n如果在脚本如果在脚本#!行行,那么那么 bash 将把它认为是一将把它认为是一个一般个一般 的注释行的注释行.Shell基本语法Shell脚本的执行nShell脚本的执行脚本的执

8、行 sh scriptname bash scriptname.n不推荐使用不推荐使用 sh&filename 重定向脚本重定向脚本.覆盖覆盖文件原有内容文件原有内容.command&filename 重定向重定向 stdout 和和 stderr 到文件中到文件中 command&2 重定向重定向 command 的的 stdout 到到 stderr scriptname filename 重定向脚本重定向脚本.添加到文件添加到文件尾端尾端,如果没有文件如果没有文件,则创建这个文件则创建这个文件.n“”和和“”的区别在于:的区别在于:“”是用来创建一个新是用来创建一个新的文件的文件file

9、names.txt,如果已经有了同名的文件就覆,如果已经有了同名的文件就覆盖掉以前的内容;而盖掉以前的内容;而“”是用来在已经存在的文件是用来在已经存在的文件后面追加新的内容,如果没有这个文件就创建它。后面追加新的内容,如果没有这个文件就创建它。Shell基本语法特殊字符n|管道管道.分析前边命令的输出分析前边命令的输出,并将输出作为并将输出作为后边命令的输入,这是一种产生命令链的好方后边命令的输入,这是一种产生命令链的好方法法.n管道是进程间通讯的一个典型办法管道是进程间通讯的一个典型办法,将一个进将一个进程的程的 stdout 放到另一个进程的放到另一个进程的 stdin 中中.n 标准的

10、方法是将一个一般标准的方法是将一个一般,比如比如 cat或或 echo,传递到一个过滤命令中得到结果传递到一个过滤命令中得到结果,如如:cat$filename1|$filename2|grep$search_word Shell基本语法特殊字符n命令的输出也可以传递到脚本中命令的输出也可以传递到脚本中1#!/bin/bash 2#uppercase.sh:修改输出修改输出,全部转换为大写全部转换为大写 3 4 tr a-z A-Z 7 8 exit 0$ls-l|./uppercase.sh -RW-RW-R-1 BOZO BOZO 109 APR 7 19:49 1.TXT -RW-RW-

11、R-1 BOZO BOZO 109 APR 14 16:48 2.TXT -RW-R-R-1 BOZO BOZO 725 APR 20 20:56 DATA-FILE Shell基本语法特殊字符n&后台运行命令后台运行命令.一个命令后边跟一一个命令后边跟一个个&,将表示在后台运行将表示在后台运行.1#!/bin/bash 2#background-loop.sh 3 4 for i in 1 2 3 4 5 6 7 8 9 10#第第 5 do 6 echo-n$i 7 done&#在后台运行这个循环在后台运行这个循环 8#在第在第 2 个循环之后个循环之后,将在某些时候执行将在某些时候执行.

12、9 Shell基本语法变量和参数nShell定义的环境变量定义的环境变量n用户定义的变量用户定义的变量n预定义变量预定义变量n位置参数变量位置参数变量n参数置换的变量参数置换的变量n变量的使用变量的使用Shell基本语法环境变量n它是定义的和系统工作环境有关的变量,用户亦可重新它是定义的和系统工作环境有关的变量,用户亦可重新定义该类变量定义该类变量。其包含。其包含:nHOME 用于保持注册目录的完全路径名用于保持注册目录的完全路径名nPATH shell按照该变量的顺序在其中搜索与名称一致按照该变量的顺序在其中搜索与名称一致的可执行文件。的可执行文件。nTERM 终端类型终端类型nUID 当前

13、用户的标识当前用户的标识nPWD 当前工作目录的绝对路径当前工作目录的绝对路径nPS1 主提示符,特权用户是主提示符,特权用户是#,普通用户是,普通用户是$。nPS2 辅助提示符,提示用户输入命令的其余部分,默认辅助提示符,提示用户输入命令的其余部分,默认的辅助提示符是的辅助提示符是”Shell基本语法用户定义之变量n用户自定义变量规则:用户自定义变量规则:变量名变量名=变量值变量值n定义变量注意事项定义变量注意事项:n定义变量时,变量名前不需要加定义变量时,变量名前不需要加$。$NAME=lyqn变量设为只读,使其不再改变。变量设为只读,使其不再改变。readonly 变量名变量名n将将Sh

14、ell变量提供给其他命令使用。变量提供给其他命令使用。export 变量名变量名export 变量名变量名=变量值变量值Shell基本语法用户定义之变量n用户定义之变量名由字母和下划线组成,并且变量名第用户定义之变量名由字母和下划线组成,并且变量名第一个字母不能为数字。一个字母不能为数字。n使用变量时,在变量名字两边使用变量时,在变量名字两边$后面加上后面加上$SUN=sun$echo$SUNday$echo$SUNday比较上述两条命令的输出结果。比较上述两条命令的输出结果。n命令行上同时对多个变量赋值,赋值语句之间用空格分开,命令行上同时对多个变量赋值,赋值语句之间用空格分开,变量赋值从右

15、至左进行。变量赋值从右至左进行。$X=x Y=y;echo x;echo y$X=$Y Y=y;echo x;echo yShell基本语法内部变量n内部变量内部变量也是在也是在Shell执行前就定义的变量,执行前就定义的变量,但其只能被使用而无法被修改或重定义。但其只能被使用而无法被修改或重定义。n$#位置参数的数量位置参数的数量n$*所有位置参数的内容所有位置参数的内容n$?命令执行后返回的状态命令执行后返回的状态n$当前进程的进程号当前进程的进程号最常见的用途是作为最常见的用途是作为暂存文件的名称,以保证不会重复。暂存文件的名称,以保证不会重复。n$!后台运行的最后一个进程号后台运行的最

16、后一个进程号n$0 当前执行的进程名当前执行的进程名Shell基本语法位置参数变量n 由由shell在程序运行时设置。是在命令行中在程序运行时设置。是在命令行中按照各自的位置决定的变量,程序名之后输按照各自的位置决定的变量,程序名之后输入的参数,之间用空格分割,第一个参数可入的参数,之间用空格分割,第一个参数可使用使用$1取得,以此类推,取得,以此类推,$0表示当前表示当前Shell程序的进程名。程序的进程名。n共共10个位置参数变量,从程序名开始依次个位置参数变量,从程序名开始依次为第为第09个个nShift命令递归访问参数命令递归访问参数Shell基本语法位置参数变量nshift shif

17、t 命令重新分配位置参数命令重新分配位置参数,其实其实就是向左移动一个位置就是向左移动一个位置.n$1-$2,$2-$3,$3-$4,等等等等.n 老的老的$1 将消失将消失,但是但是$0(脚本名脚本名)是不是不会改变的会改变的.如果你使用了大量的位置参数如果你使用了大量的位置参数,那么那么n shift 命令允许你存取超过命令允许你存取超过 10 个参数个参数.虽然虽然表示法也允许这样表示法也允许这样.Shell基本语法参数置换变量n根据不同条件给变量赋予不同的值。根据不同条件给变量赋予不同的值。n变量变量=$参数参数-word,$parameter:-default如如果设置了参数,则用参

18、数的值置换变量的值,否则用果设置了参数,则用参数的值置换变量的值,否则用word置换。这两者大部分情况下相同。置换。这两者大部分情况下相同。n变量变量=$参数参数=word,$parameter:=default如果设置了参数,则用参数的值置换变量的值,否则如果设置了参数,则用参数的值置换变量的值,否则把变量设置成把变量设置成word,然后再用,然后再用word替换参数的值。替换参数的值。n变量变量=$参数?参数?Word如果设置了参数,则用参数的如果设置了参数,则用参数的值置换变量的值,否则就显示值置换变量的值,否则就显示word并从并从shell中退出,中退出,如果省略了如果省略了word

19、,则显示标准信息。该种方式常用于,则显示标准信息。该种方式常用于出错指示。出错指示。n变量变量=$参数参数+word 如果设置了参数,则用如果设置了参数,则用word置换变量,否则不进行置换而使用置换变量,否则不进行置换而使用 null字符串。字符串。Shell基本语法变量表达式nTEST命令:命令:ntest condition或者或者condition 命令进命令进行条件测试。行条件测试。n用在以下四种情况用在以下四种情况:字符比较字符比较数值的比较数值的比较文件操作文件操作逻辑操作逻辑操作Shell基本语法变量表达式n字符比较test命令含义test命令含义str1str2当str1与s

20、tr2相同时,返回真-n str当str的长度大于0时,返回真str1!str2当str1与str2不同时,返回真-z str当str的长度是0是,返回真str当str不是空字符时,返回真Shell基本语法变量表达式n整数操作符test表达式含义test表达式含义int1 eq int2当int1等于int2时,返回真int1 gt int2当int1大于int2时,返回真int1 ge int2当int1大于/等于int2时,返回真int1 ne int2当int1不等于int2时,返回真int1 le int2当int1小于/等于int2时,返回真Shell基本语法变量表达式test表达式含义test表达式含义-d file当file是一个目录时,返回真-s file当file文件长度大于0时,返回真-f file当file是一个普通文件时,返回真-w file当file是一个可写文件时,返回真-r file当file是一个可读文件时,返回真-x file当file是一个可执行文件时,返回真n文件操作符Shell基本语法变量表达式n逻辑操作符test表达式含义!expr当expr的值是假时,返回真expr1 a expr2当expr1和expr2值同为真时,返回真expr1 o expr2当expr1和expr2的值至少有一个为真时,返回真

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁