免费预览已结束,剩余69页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux操作系统,Shell脚本编程,主要内容和学习要求,掌握创建shell脚本的基本步骤学会使用条件测试掌握if条件结构与case选择结构掌握for循环、while循环和until循环结构学会shift命令的使用学会shell脚本的调试,Shell脚本,Shell脚本,如果有一系列你经常使用的Linux命令,你可以把它们存储在一个文件里,shell可以读取这个文件并顺序执行其中的命令,这样的文件被称为脚本文件。shell脚本按行解释。,Shell脚本的编写,Shell脚本是纯文本文件,可以使用任何文本编辑器编写Shell脚本通常是以.sh作为后缀名,Shell脚本的执行,chmod+xscript_name./script_name,bashscript_name,第一行:指定用哪个程序来编译和执行脚本。,Shell脚本的格式,#!/bin/bash,可执行语句和shell控制结构,注释:以“#”开头,可独占一行,或跟在语句的后面。,Shell脚本,#!/bin/sh,#!/bin/csh,一个shell脚本通常由一组Linux命令、shell命令、控制结构和注释语句构成。,在脚本中多写注释语句是一个很好的编程习惯,#!/bin/bash#ThisisthefirstBashshellprogram#ScriptName:greetings.shechoechoeHello$LOGNAME,cechoitsnicetalkingtoyou.echoYourpresentworkingdirectoryis:pwd#ShowthenameofpresentdirectoryechoechoeThetimeisdate+%T!.nByeecho,bashgreetings.sh,chmod+xgreetings.sh./greetings,Shell脚本举例,echo命令,功能说明:显示文字。语法:echo-ne字符串或echo-help-version补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。-n不进行换行-e若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出n换行b空格.,参数:,-n不要在最后自动换行-e若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:a发出警告声;b删除前一个字符;c最后不加上换行符号;f换行但光标仍旧停留在原来的位置;n换行且光标移至行首;r光标移至行首,但不换行;t插入tab;v与f相同;插入字符;nnn插入nnn(八进制)所代表的ASCII字符;-help显示帮助-version显示版本信息,#!/bin/bash#Thisscriptistotesttheusageofread#Scriptname:ex4read.shecho=examplesfortestingread=echo-eWhatisyourname?creadnameechoHello$nameechoecho-nWheredoyouwork?readechoIguess$REPLYkeepsyoubusy!echoread-pEnteryourjobtitle:#自动读给REPLYechoIthoughtyoumightbean$REPLY.echoecho=Endofthescript=,Shell脚本举例,read命令,readvariable#读取变量给variablereadxy#可同时读取多个变量read#自动读给REPLYreadp“Pleaseinput:”#自动读给REPLY,状态变量$?中保存命令退出状态的值,grep$USER/etc/passwdecho$?grephello/etc/passwd;echo$?,条件测试,条件测试可以根据某个特定条件是否满足,来选择执行相应的任务。,Bash中允许测试两种类型的条件:命令成功或失败,表达式为真或假,任何一种测试中,都要有退出状态(返回值),退出状态为0表示命令成功或表达式为真,非0则表示命令失败或表达式为假。,内置测试命令test,通常用test命令来测试表达式的值,x=5;y=10test$x-gt$yecho$?,test命令可以用方括号来代替,x=5;y=10$x-gt$yecho$?,表达式测试包括字符串测试、整数测试和文件测试。,测试表达式的值,方括号前后要留空格!,name=Tom$name=Tt?echo$?,2.x版本以上的Bash中可以用双方括号来测试表达式的值,此时可以使用通配符进行模式匹配。,测试表达式的值,$name=Tt?echo$?,字符串测试,name=Tom;-z$name;echo$?,操作符两边必须留空格!,字符串测试,name2=Andy;$name=$name2;echo$?,整数测试,即比较大小,x=1;$x-eq1;echo$?,x=a;$x-eq1;echo$?,整数测试,操作符两边必须留空格!,X,整数测试也可以使用let命令或双圆括号,x=1;let$x=1;echo$?,x=1;($x+1=2);echo$?,只能用于整数测试!,整数测试,相应的操作符为:,=、!=、=、Tom;echo$?,编程小结:条件测试,整数测试,注意这两种方法的区别!,编程小结:条件测试,逻辑测试,如果使用双方括号,可以使用通配符进行模式匹配。,编程小结:条件测试,文件测试,编程小结:控制结构,if条件语句case选择语句for循环语句while循环语句until循环语句break、continue、sleep命令select循环与菜单shift命令,$.,$(.),$.,$(.).,.,(.),各种括号的作用,function_name()commands,函数,一个函数就是一个子程序,用于完成特定的任务,当有重复代码,或者一个任务只需要很少的修改就被重复几次执行时,这时你应考虑使用函数。,functionfunction_namecommands,函数的一般格式,和其它编程语言一样,Bash也可以定义函数。,函数举例,#!/bin/bashfun1()echoThisisafunctionechoNowexitingfun1.fun2()echoThisisfun2.echoNowexitingfun2.,只需输入函数名即可调用该函数。,函数的调用,函数必须在调用之前定义,#!/bin/bashfun2()echoThisisfun2.echoNowexitingfun2.fun2#调用函数fun2,例:ex4fun2.sh,ex4fun3.sh,ex4fun2.sh,#!/bin/bashJUST_A_SECOND=1fun()#Asomewhatmorecomplexfunctioni=0REPEATS=5echoechoAndnowthefunreallybegins.echosleep$JUST_A_SECOND#Hey,waitasecond!while$i-lt$REPEATSdoecho-FUNCTIONS-echoecholeti+=1done#Now,callthefunctions.funexit0,ex4fun3.sh,#f1#Willgiveanerrormessage,sincefunctionf1notyetdefined.#declare-ff1#Thisdoesnthelpeither.#f1#Stillanerrormessage.#However.f1()echoCallingfunctionf2fromwithinfunctionf1.f2f2()echoFunctionf2.#f1#Functionf2isnotactuallycalleduntilthispoint#althoughitisreferencedbeforeitsdefinition.#Thisispermissible.,向函数传递参数,函数的调用,例:ex4fun4.sh,函数与命令行参数,例:ex4fun5.sh,return与exit,例:ex4fun6.sh,向函数传递参数例:ex4fun4.sh,#!/bin/bash#FunctionsandparametersDEFAULT=default#Defaultparamvalue.func2()if-z$1#Isparameter#1zerolength?thenecho-Parameter#1iszerolength-elseecho-Param#1is$1-fivariable=$1:-$DEFAULTechovariable=$variableif-n$2thenecho-Parameter#2is$2-fireturn0,echoechoNothingpassedfunc2#CalledwithnoparamsechoechoOneparameterpassed.func2first#CalledwithoneparamechoechoTwoparameterspassed.func2firstsecond#Calledwithtwoparamsechoechosecondpassed.func2second#Thefirstparameterisofzero?lengthechoexit0#Endofscript,函数与命令行参数例:ex4fun5.sh,#!/bin/bash#functionandcommandlinearguments#Callthisscriptwithacommandlineargument,#somethinglike$0arg1.func()echo$1echoFirstcalltofunction:noargpassed.echoSeeifcommand-lineargisseen.Func#No!Command-lineargnotseen.echo=echoechoSecondcalltofunction:command-lineargpassedexplicitly.func$1#Nowitsseen!exit0,return与exit例:ex4fun6.sh,#!/bin/bash#purpose:Maximumoftwointegers.max2()#Returnslargeroftwonumbers.if-z$2thenechoNeedtopasstwoparame
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1+X失智老年人照护中级考试题及答案
- 污水处理工操作师试题答案库
- 沧州职业技术学院招聘辅导员试题及答案
- 2025年湖南省危险货物港口装卸管理人员从业资格考试题库及答案
- 2026年设备租赁协议
- 2026年医疗培训课程合同
- 2026年建筑储能系统安装合同
- 浙江安全生产月知识培训测试试题及参考答案
- 焊工普工面试题库及答案解析(版)
- 焊工识图考试试题及答案
- 果树绿色防控技术课件
- 《危险货物港口作业重大事故隐患判定标准》知识培训
- 2025版急诊科专业住院医师规范化培训临床实践能力结业考核方案
- 2024年中考模拟试卷语文(上海卷)
- 超全自考英语二词汇表-含音标4500-个单词
- 按部位根据症状分科室
- 中班《猴王吃西瓜》课件
- 工业自动化设备维护保养指南
- 课件:《中华民族共同体概论》第一讲 中华民族共同体基础理论
- 先进制造技术 课件 第一章 先进制造技术概论
- DL-T5001-2014火力发电厂工程测量技术规程
评论
0/150
提交评论