《10-4shell编程.ppt》由会员分享,可在线阅读,更多相关《10-4shell编程.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Linux Shell编程编程函数函数函数定义在shell中还可以定义函数。函数实际上也是由若干条shell命令组成的,因此它与shell程序形式上是相似的,不同的是它不是一个单独的进程,而是shell程序的一部分。函数定义的基本格式为:functionfnameorfname若干命令行调用函数的格式为:fnameparam1param2shell函数可以完成某些例行的工作,而且还可以有自己的退出状态,因此函数也可以作为if、while等控制结构的条件。在函数定义时不用带参数说明,但在调用函数时可以带有参数,此时shell将把这些参数分别赋予相应的位置参数$1、$2、.及$*。#!/bin/b
2、ashfunctionfun1echothisisthefirstfunctionfun1fun2()echothisisthesecondfunctionfun2#bashtest.shthisisthefirstfunctionthisisthesecondfunction必须先定义,再调用#!/bin/bashfunctionfun1echothisisthefirstfunctionfun1fun2fun2()echothisisthesecondfunction函数名必须唯一#!/bin/bashfunctionfun1echothisisthefirstfunctionfun1fu
3、n1()echothisisthesecondfunctionfun1#bashtest.shthisisthefirstfunctionthisisthesecondfunction#!/bin/bashfunctionhello()echoHello,$1todayisdateechonowgoingtothefunctionhellohellokmustechobackfromthefunction#!/bin/bashfunctionfun1echothisisthefirstfunctionls-lxxfun1echotheexitstatusis:$?#bashtest.shthi
4、sisthefirstfunctionls:xx:没有那个文件或目录theexitstatusis:2函数的退出状态为2,因为最后一条命令执行出错#!/bin/bashfunctionfun1ls-lxxechothisisthefirstfunctionfun1echotheexitstatusis:$?#bashtest.shls:xx:没有那个文件或目录thisisthefirstfunctiontheexitstatusis:0退出状态值却是0,因为最后一条命令执行无错return命令可以使用单个整数值来定义函数退出状态#!/bin/bashfunctionfun1read-pente
5、ravalue:valueechodoublingthevaluereturn$value*2fun1echothenewvalueis$?#bashtest.shenteravalue:24doublingthevaluethenewvalueis48#!/bin/bashfname()read-p“pleaseinputavalue:”valueecho$value*2result=fname#反引号echotheresultis:$result#bashtest.shpleaseinputavalue:13theresultis:26函数参数#!/bin/bashfunctionfnam
6、eif$#-eq0|$#-gt2thenecho-1elif$#-eq1thenecho$1+$1elseecho$1*$2fiecho#1#echo-nadding10and15:value=fname1015echo$valueecho#2#echo-naddingjustonenumof10:value=fname10echo$valueecho#3#echo-naddingnonum:value=fnameecho$valueecho#4#echo-naddingthreenum102030:value=fname102030echo$value#bashtest.sh#1#addin
7、g10and15:150#2#addingjustonenumof10:20#3#addingnonum:-1#4#addingthreenum102030:-1#!/bin/bashfname()echo$1+$2if$#-eq2thenvalue=fname#value=bad$1$2echotheresultis:$valueelseechopleaseinputtwoparametersfi#bashtest.shpleaseinputtwoparameters#bashtest.sh12全局变量#!/bin/bashfun()value=$value*2read-ppleaseinp
8、utthevalue:valuefunechothenewvalueis:$valuelocal-局部变量#!/bin/bashfunctionfunlocaltemp=$value+5result=$temp+2temp=8value=10funechotheresultis$resultif$temp-gt$valuethenechotempislargerelseechotempissmallerfi创建库funLib.shfunctionfun1echo$1+$2functionfun2echo$1*$2test2.sh#!/bin/bash./funLib.shresult=fun1
9、1224echotheresultis$resultselectselect表达式是一种bash的扩展应用,尤其擅长于交互式使用。用户可以从一组不同的值中进行选择。selectvarin.;dobreakdone#!/bin/shechoWhatisyourfavouriteOS?selectvarinLinuxGnuHurdFreeBSDOther;dobreakdoneechoYouhaveselected$var下面是该脚本运行的结果:WhatisyourfavouriteOS?1)Linux2)GnuHurd3)FreeBSD4)Other#1YouhaveselectedLinux#
10、!/bin/bashftype=file$1case$ftypein$1:Ziparchive*)unzip$1;$1:gzipcompressed*)gunzip$1;$1:bzip2compressed*)bunzip2$1;*)errorFile$1cannotbeuncompressedwithsmartzip;esac#!/bin/bashPrintHelp()echoFORMAT:commandargechoNOTE:theargmustbenumberechosuchas:command100000returnif$#-lt1;thenPrintHelpexit-1fiif$1=*!0-9*;thenechotheargmustbenumberexit-1fi作业学习函数的创建及使用方法