(17)--第4章 shell编程Linux操作系统.ppt

上传人:奉*** 文档编号:96328470 上传时间:2023-11-04 格式:PPT 页数:54 大小:4.18MB
返回 下载 相关 举报
(17)--第4章 shell编程Linux操作系统.ppt_第1页
第1页 / 共54页
(17)--第4章 shell编程Linux操作系统.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《(17)--第4章 shell编程Linux操作系统.ppt》由会员分享,可在线阅读,更多相关《(17)--第4章 shell编程Linux操作系统.ppt(54页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)项目导入:如果想要管理好属于你的主机,那么一定要好好学习如果想要管理好属于你的主机,那么一定要好好学习shellscript。shellscript有点像是早期的批处理,即将一些命令汇总起来一次运行。但是有点像是早期的批处理,即将一些命令汇总起来一次运行。但是Shellscript拥有更强大的功能,那就是它可以进行类似程序拥有更强大的功能,那就是它可以进行类似程序(program)的撰写,并且的撰写,并且不需要经过编译不需要经过编译(compile)就能够运行,非常方便。同时,我们还可以通过就能够运行,非常方便。

2、同时,我们还可以通过shellscript来简化我们日常的工作管理。在整个来简化我们日常的工作管理。在整个Linux的环境中,一些服务的环境中,一些服务(service)的启动都是通过的启动都是通过shellscript来运行的,如果你对于来运行的,如果你对于script不了解,不了解,一旦发生问题,可真是会求助无门啊!一旦发生问题,可真是会求助无门啊!职业能力目标和要求:理解理解shellscript。掌握判断式的用法。掌握判断式的用法。掌握条件判断式的用法。掌握条件判断式的用法。掌握循环的用法。掌握循环的用法。LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版

3、)第第4 4章章 shellshell编程编程-shell script-shell script 1.了解shell script 2.练习简单的 shell script 3.用好判断式 4.使用条件判断式 7.项目实录 5.使用循环(loop)6.对shell script进行追踪与调试LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.1 4.1 了解了解shell scriptshell script 1.了解shell script 2.编写与执行一个shell script 3.养成撰写 shell script 的良好习惯LinuxLinux网

4、络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.1.1 4.1.1 了解了解shell scriptshell scriptv简单地说,shell script 就像是早期 DOS 年代的批处理(.bat),最简单的功能就是将许多命令写在一起,让使用者很轻易地就能够一下子处理复杂的操作(运行一个文件“shell script”,就能够一次运行多个命令)。而且shell script更提供数组、循环、条件与逻辑判断等重要功能,让用户也可以直接以shell来撰写程序,而不必使用类似C程序语言等传统程序撰写的语法。LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2

5、 2版)版)4.1.2 4.1.2 编写与执行一个编写与执行一个shell scriptshell scriptLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.1.2 4.1.2 编写与执行一个编写与执行一个shell scriptshell scriptLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.1.2 4.1.2 编写与执行一个编写与执行一个shell scriptshell scriptLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.1.2 4.1.2 编写与执行一个编写

6、与执行一个shell scriptshell scriptLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.1.3 4.1.3 养成撰写养成撰写 shell script shell script 的良好习惯的良好习惯v建议一定要养成良好的 script 撰写习惯,在每个 script 的文件头处包含如下内容:script 的功能;script 的版本信息;script 的作者与联络方式;script 的版权声明方式;script 的 History(历史记录);script 内较特殊的命令,使用“绝对路径”的方式来执行;script 运行时需要的环境变量预

7、先声明与设置。LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.2 练习简单的 shell script 1.完成简单范例 2.了解脚本的运行方式的差异LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.2.1 4.2.1 完成简单范例完成简单范例LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.2.1 4.2.1 完成简单范例完成简单范例LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.2.1 4.2.1 完成简单范例完成简单范例LinuxLinux网

8、络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.2.1 4.2.1 完成简单范例完成简单范例LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)1利用利用绝对路径、相对路径、文件名、绝对路径、相对路径、文件名、bash、sh等等方式直接运行脚本方式直接运行脚本4.2.2 4.2.2 了解脚本的运行方式的差异了解脚本的运行方式的差异2利用利用source和和.运行脚本运行脚本时时:在父程序中运行:在父程序中运行LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.3 4.3 用好判断式用好判断式子任务子任务1利用利用t

9、est命令的测试功能命令的测试功能rootwww scripts#vimsh05.sh#!/bin/sh#2019/12/8申海杰申海杰echo本程序会输出你提供的文件名对应文件的的类型及权限。本程序会输出你提供的文件名对应文件的的类型及权限。read-p请输入一个文件名:请输入一个文件名:filenametest-z$filename&echo你必须输入一个文件名。你必须输入一个文件名。&exit0test!-e$filename&echo文件不存在。文件不存在。&exit0test-f$filename&filetype=普通文件普通文件test-d$filename&filetype=目

10、录文件目录文件test-r$filename&perm=可读可读test-w$filename&perm=$perm可写可写test-x$filename&perm=$perm可执行可执行echo文件文件$filename是一个是一个$filetype。echo当前用户对此文件的权限是:当前用户对此文件的权限是:$perm。LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.3 4.3 用好判断式用好判断式子任务子任务2利用判断符号利用判断符号分析:需要利用中括号、&与|。rootwww scripts#vish06.sh#!/bin/sh#2019/12/8

11、申海杰申海杰read-p请回答(请回答(y/n):):answer$answer=y-o$answer=Y&echo是是&exit0$answer=n-o$answer=N&echo否否&exit0echo不知道不知道&exit0LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.3 4.3 用好判断式用好判断式子任务子任务3使用使用Shellscript的默认变量的默认变量($0,$1.)那么,script 是怎么实现这个功能的呢?其实 script 针对参数已经设置好了一些变量名称。对应如下:/path/to/scriptname opt1 opt2 op

12、t3 opt4$0$1$2$3$4LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.3 4.3 用好判断式用好判断式子任务子任务3使用使用Shellscript的默认变量的默认变量($0,$1.)rootwww scripts#vimsh07.sh#!/bin/sh#2019/12/8申海杰申海杰echo本脚本程序的名字是:本脚本程序的名字是:$0“echo你执行本脚本时提供的参数个数是:你执行本脚本时提供的参数个数是:$#“$#-lt2&echo你提供的参数少于两个,程序停止执行。你提供的参数少于两个,程序停止执行。&exit0echo你提供的所有参数是:

13、你提供的所有参数是:$“echo第一个参数是:第一个参数是:$1“echo第二个参数是:第二个参数是:$2LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.3 4.3 用好判断式用好判断式子任务4 shift:造成参数变量号码偏移rootwww scripts#vish08.sh#!/bin/bash#2019/12/8申海杰申海杰echo参数个数是:参数个数是:$#“echo所有参数:所有参数:$“shiftecho参数个数是:参数个数是:$#“echo所有参数:所有参数:$“shift3echo参数个数是:参数个数是:$#“echo所有参数:所有参数:$

14、LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthen1单层、简单条件判断式单层、简单条件判断式如果你只有一个判断式要进行,那么我们可以简单地这样做:if 条件判断式;then当条件判断式成立时,可以进行的命令工作内容;fi =将 if 反过来写,就成为 fi 了!结束 if 之意!&代表 AND;|代表 or。LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthenrootwww sc

15、ripts#cpsh06.shsh06-2.sh =这样改得比较快rootwww scripts#vimsh06-2.sh#!/bin/bash#2019/12/8 申海杰申海杰read-p请回答(请回答(y/n):):answerif$answer=y|$answer=Y;thenecho是是exit0fiif$answer=n|$answer=N;thenecho否否“exit0fiecho不知道不知道&exit0LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthen2多重、复杂条件判

16、断式#一个条件判断,分成功进行与失败进行(else)if 条件判断式;then当条件判断式成立时,可以进行的命令工作内容;else当条件判断式不成立时,可以进行的命令工作内容;fiLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthen2多重、复杂条件判断式如果考虑更复杂的情况,则可以使用:#多个条件判断(if elif elif else)分多种不同情况运行if 条件判断式一;then当条件判断式一成立时,可以进行的命令工作内容;elif 条件判断式二;then当条件判断式二成立时,可以进

17、行的命令工作内容;else当条件判断式一与二均不成立时,可以进行的命令工作内容;fiLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthenrootwww scripts#cp sh06-2.sh sh06-3.shrootwww scripts#vi sh06-3.sh#!/bin/bash#2019/12/8 申海杰申海杰read-p 请回答(y/n):answerif$answer=y|$answer=Y ;thenecho 是“elif$answer=n|$answer=N ;the

18、necho 否“elseecho 不知道“fiLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthenrootwww scripts#vimsh09.sh#!/bin/bash#2019/12/8申海杰申海杰if$1=start;thenecho服务启动中。服务启动中。elif$1=;thenecho你必须提供参数,格式:你必须提供参数,格式:$0参数参数elseecho允许的参数是允许的参数是start,格式:,格式:$0start“fiLinuxLinux网络操作系统项目教程(第网络操作

19、系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthenrootwww#netstat-tulnActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 0.0.0.0:111 0.0.0.0:*LISTENtcp 0 0 127.0.0.1:631 0.0.0.0:*LISTENtcp 0 0 127.0.0.1:25 0.0.0.0:*LISTENtcp 0 0:22 :*LISTENudp

20、 0 0 0.0.0.0:111 0.0.0.0:*udp 0 0 0.0.0.0:631 0.0.0.0:*#封包格式 本地IP:端口 远程IP:端口 是否监听LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthenrootwww scripts#vimsh10.sh#!/bin/bash#2019/12/8申海杰申海杰echo 本程序会检测你的Linux系统已开启的服务信息,包括ssh服务、www服务。“testing=$(netstat-tuln|grep.*:22.*)if$test

21、ing!=;thenecho 你的系统正在运行ssh服务。“fitesting=$(netstat-tuln|grep.*:80.*)if$testing!=;thenecho 你的系统正在运行www服务。“fiLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthenrootwww scripts#vimsh11.sh#!/bin/bash#2019/12/8申海杰申海杰echo 这个程序会显示你还有多久毕业。“read-p 请输入你入学的时间(例如20190901):indatedate1

22、=$(echo$indate|grep 0-98)if date1=;thenecho 你输入的日期不符合要求。“exit 1fiLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务1利用利用ifthenindate_s=date-date=$indate+%soutdate_s=$($indate_s+365*4*24*60*60)nowdate_s=date+%sresult=$($outdate_s-$nowdate_s)/60/60/24)if$result-lt 0 ;thenecho 你在$(-1

23、*$result)天前已经毕业了!“Elseecho 你还有$result天毕业!“fiLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务2利用利用caseesac判断判断case$变量名称in =关键字为 case,变量前有$符 第一个变量内容)=每个变量内容建议用双引号括起来,关键字则为小括号)程序段;=每个类别结尾使用两个连续的分号来处理 第二个变量内容)程序段;*)=最后一个变量内容都会用*来代表所有其他值不包含第一个变量内容与第二个变量内容的其他程序运行段exit 1;esac =最终的 case

24、 结尾!思考一下case反过来写是什么LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务2利用利用caseesac判断判断rootwww scripts#vimsh09-2.sh#!/bin/bash#2019/12/8申海杰申海杰case$1 instart)echo 服务启动中。“;)echo 你必须提供参数,格式:$0 参数“;*)echo 允许的参数是start,格式:$0 start“;esacLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条

25、件判断式使用条件判断式子任务子任务2利用利用caseesac判断判断下面以一个例子来进一步说明:让用户输入start|restart|stop,并且将用户的变量显示到屏幕上,如果不是 start|restart|stop时,就告诉用户仅有这三种选择。rootwww scripts#vimsh12.sh#!/bin/bash#2019/12/8申海杰申海杰echo 这个程序将根据你输的参数执行不同的操作。“#read-p 请输入你要执行的功能:choice#case$choice inLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式

26、使用条件判断式子任务子任务2利用利用caseesac判断判断case$1 instart)echo 服务启动中。“;restart)echo 服务重启中。“;stop)echo 服务停止中。“;*)echo 使用方法:$0 start|restart|stop“;esacLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务3利用利用function功能功能我们将 sh12.sh 改写一下,自定义一个名为 printit 的函数:rootwww scripts#vimsh12-2.sh#!/bin/bash#2

27、019/12/8申海杰申海杰functionpri()echo-n服务正在服务正在“echo这个程序将根据你输的参数执行不同的操作。这个程序将根据你输的参数执行不同的操作。“#read-p请输入你要执行的功能:请输入你要执行的功能:choice#case$choiceinLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务3利用利用function功能功能case$1instart)pri;echo启动中。启动中。“;restart)pri;echo重启中。重启中。“;stop)pri;echo停止中。停止中

28、。“;*)echo使用方法:使用方法:$0start|restart|stop“;esacLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务3利用利用function功能功能我们将上面的例子再次改写一下:rootwww scripts#vimsh12-3.sh#!/bin/bash#2019/12/8申海杰申海杰function pri()echo 服务正在$1“echo 这个程序将根据你输的参数执行不同的操作。“#read-p 请输入你要执行的功能:choice#case$choice inLinuxLi

29、nux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.4 4.4 使用条件判断式使用条件判断式子任务子任务3利用利用function功能功能case$1 instart)pri 启动中。“;restart)pri 重启中。“;stop)pri 停止中。“;*)echo 使用方法:$0 start|restart|stop“;esacLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.5使用循环(使用循环(loop)1.while do done,until do done(不定循环)2.fordodone(固定循环)3.fordodone 的

30、数值处理LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.5.1whiledodone,untildodone(不定循环)(不定循环)一般来说,不定循环最常见的就是底下这两种状态了。while condition =中括号内的状态就是判断式do =do 是循环的开始!程序段落done /dev/null&result=0|result=1if$result=0;thenecho$network.$host可以可以ping通。通。“elseecho$network.$hostping不通。不通。“fidoneLinuxLinux网络操作系统项目教程(第网络操作

31、系统项目教程(第2 2版)版)4.5 4.5 使用循环(使用循环(looploop)4.5.2fordodone(固定循环)(固定循环)如果想要让用户输入某个目录名,然后找出某目录内的文件的权限,该如何做呢?程序如下:rootwww scripts#vimsh18.sh#!/bin/bash#2019/12/8申海杰申海杰LinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.5 4.5 使用循环(使用循环(looploop)4.5.2fordodone(固定循环)(固定循环)echo 本程序会输出你提供的目录中文件的的权限。“read-p 请输入一个目录名:di

32、rnameif$dirname=-o!-d$dirname ;thenecho 输入有误,$dirname目录不存在。“exit 1fifilelist=$(ls$dirname)for filename in$filelistdoperm=“test-r$dirname/$filename&perm=可读“test-w$dirname/$filename&perm=$perm 可写“test-x$dirname/$filename&perm=$perm 可执行“echo 当前用户对$dirname/$filename文件拥有的权限是:$perm。“doneLinuxLinux网络操作系统项目

33、教程(第网络操作系统项目教程(第2 2版)版)4.5 4.5 使用循环(使用循环(looploop)4.5.3fordodone的数值处理的数值处理除了上述的方法之外,for循环还有另外一种写法。语法如下:for(初始值;限制值;执行步长)do程序段doneLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.5 4.5 使用循环(使用循环(looploop)4.5.3fordodone的数值处理的数值处理rootwww scripts#vimsh19.sh#!/bin/bash#2019/12/8申海杰申海杰read-p 请输入一个数字,程序将计算从1到这个数

34、字间所有数字的和:nums=0for(i=1;i=$num;i=i+1)dos=$($s+$i)doneecho 1到$num的所有数字的和是:$sLinuxLinux网络操作系统项目教程(第网络操作系统项目教程(第2 2版)版)4.6 4.6 对对shell scriptshell script进行追踪与调试进行追踪与调试我们就直接以 bash 的相关参数来进行判断。rootwww#sh -nvx scripts.sh选项与参数:-n:不要执行 script,仅查询语法的问题。-v:在执行 script 前,先将 script 的内容输出到屏幕上。-x:将使用到的 script 内容显示到屏幕上,这是很有用的参数!

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com