linux网络管理员实用教程第3章_shell编程.ppt

上传人:e****s 文档编号:91015102 上传时间:2023-05-21 格式:PPT 页数:50 大小:507.50KB
返回 下载 相关 举报
linux网络管理员实用教程第3章_shell编程.ppt_第1页
第1页 / 共50页
linux网络管理员实用教程第3章_shell编程.ppt_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《linux网络管理员实用教程第3章_shell编程.ppt》由会员分享,可在线阅读,更多相关《linux网络管理员实用教程第3章_shell编程.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Linux网络管理员实用教程(第2版)第第第第3 3章章章章ShellShell编程编程编程编程Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程23.1 shell3.1 shell命令行书写规则命令行书写规则命令行书写规则命令行书写规则对shell命令行基本功能的理解有助于编写更好的shell程序,在执行shell命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令。例如:rootlocalhost root#ls a*-l;free;df长shell命令行可以使用反斜线字符()在命令行上扩充。例如:rootlocalhost

2、 root#echo this is long commandthis is long command注意:“”符号是自动产生的,而不是输入的。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程33.2 3.2 编写编写编写编写/修改权限及执行修改权限及执行修改权限及执行修改权限及执行shellshell程序的步骤程序的步骤程序的步骤程序的步骤shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。shell程序是指放在一个文件中的一系列Linux命令和实用程序。在执行的时候,通过Linux操作系统一个接着一个地解释和

3、执行每条命令。首先,编写第一个shell程序,从中学习shell程序的编写、修改权限、执行过程。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程43.2.1 编辑编辑shell程序程序编辑一个内容如下的源文件,文件名为date,可将其存放在目录/bin下。rootlocalhost bin#vi date#!/bin/sh echo Mr.$USER,Today is:echo&date +%B%d%Aecho Wish you a lucky day!注意:#!/bin/sh通知采用bash解释。如果在echo语句中执行shell命令date

4、,则需要在date命令前加符号“&”,其中%B%d%A为输出格式控制符。3.2 3.2 编写编写编写编写/修改权限及执行修改权限及执行修改权限及执行修改权限及执行shellshell程序的步骤程序的步骤程序的步骤程序的步骤Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程53.2 3.2 编写编写编写编写/修改权限及执行修改权限及执行修改权限及执行修改权限及执行shellshell程序的步骤程序的步骤程序的步骤程序的步骤3.2.2 建立可执行的程序建立可执行的程序编辑完该文件之后不能立即执行该文件,需给文件设置可执行权限。使用如下命令:chmod

5、+x datechmod+x dateLinux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程63.2 3.2 编写编写编写编写/修改权限及执行修改权限及执行修改权限及执行修改权限及执行shellshell程序的步骤程序的步骤程序的步骤程序的步骤3.2.3 执行执行shell程序程序方法一:rootlocalhost bin#./date Mr.root,Today is:二月06星期二Wish you a lucky day!方法二:另外一种执行date的方法就是把它作为一个参数传给shell命令:rootlocalhost bin#bash dat

6、eMr.root,Today is:二月06星期二Wish you a lucky day!Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程7方法三:为了在任何目录都可以编译和执行shell所编写的程序,即把/bin的这个目录添加到整个环境变量中。具体操作如下。rootlocalhost root#export PATH=/bin:$PATHrootlocalhost root#date Mr.root,Today is:二月06星期二Wish you a lucky day!3.2 3.2 编写编写编写编写/修改权限及执行修改权限及执行修改权

7、限及执行修改权限及执行shellshell程序的步骤程序的步骤程序的步骤程序的步骤Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程83.2 3.2 编写编写编写编写/修改权限及执行修改权限及执行修改权限及执行修改权限及执行shellshell程序的步骤程序的步骤程序的步骤程序的步骤例3.1 编写一个shell程序mkf,此程序的功能是:显示root下的文件信息,然后建立一个kk的文件夹,在此文件夹下新建一个文件aa,修改此文件的权限为可执行。分析:分析:此shell程序中需要依次执行下列命令:进入root目录:cd/root显示root目录下的

8、文件信息:ls l新建文件夹kk:mkdir kk进入root/kk目录:cd kk新建一个文件aa:vi aa#编辑完成后需手工保存修改aa文件的权限为可执行:chmod+x aa回到root目录:cd/rootLinux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程9因此此shell程序只是以上命令的顺序集合,假定程序名为mkf。rootlocalhost root#vi mkfcd/rootls lmkdir kkcd kkvi aa chmod+x aacd/root3.2 3.2 编写编写编写编写/修改权限及执行修改权限及执行修改权限及执行修

9、改权限及执行shellshell程序的步骤程序的步骤程序的步骤程序的步骤Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程103.3 3.3 在在在在shellshell程序中使用的参数程序中使用的参数程序中使用的参数程序中使用的参数3.3.1 位置参数位置参数由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1。类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。

10、Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程113.3 3.3 在在在在shellshell程序中使用的参数程序中使用的参数程序中使用的参数程序中使用的参数3.3.2 内部参数内部参数上述过程中的$0是一个内部变量,它是必需的,而$1则可有可无,最常用的内部变量有$0、$#、$?、$*,它们的含义如下。$0:命令含命令所在的路径。$#:传递给程序的总的参数数目。$?:shell程序在shell中退出的情况,正常退出返回0,反之为非0值。$*:传递给程序的所有参数组成的字符串。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 Sh

11、ellShell编程编程编程编程123.3 3.3 在在在在shellshell程序中使用的参数程序中使用的参数程序中使用的参数程序中使用的参数例3.2 编写一个shell程序,用于描述shell程序中的位置参数$0、$#、$?、$*,程序名为test1,代码如下。(1)用vi编辑程序rootlocalhost bin#vi test1#!/bin/sh echo Program name is 0;echo There are totally#parameters passed to this program;echo The last is?;echo The parameters are

12、*;(2)设置权限rootlocalhost bin#chmod+x test1(3)运行rootlocalhost bin#test1 this is a test program /传递5个参数Program name is/bin/test1/给出程序的完整路径和名字There are totally 5 parameters passed to this program/参数的总数The last is 0 /程序执行结果The parameters are this is a test program/返回由参数组成的字符串Linux网络管理员实用教程(第2版)第第第第3 3章章章章

13、 ShellShell编程编程编程编程133.3 3.3 在在在在shellshell程序中使用的参数程序中使用的参数程序中使用的参数程序中使用的参数例3.3 利用内部变量和位置参数编写一个名为test2的简单删除程序,如删除的文件名为a,则在终端输入的命令为test2 a。分析:除命令外至少还有一个位置参数,即$#不能为0,删除的文件为$1,程序设计过程为如下。(1)用vi编辑程序rootlocalhost bin#vi test2#!/bin/sh if test#-eq 0 then echo Please specify a file!else gzip 1/先对文件进行压缩 mv$1

14、.gz$HOME/dustbin/移动到回收站 echo File$1 is deleted!fiLinux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程143.3 3.3 在在在在shellshell程序中使用的参数程序中使用的参数程序中使用的参数程序中使用的参数(2)设置权限rootlocalhost bin#chmod+x test2(3)运行rootlocalhost bin#test2 a (假设a文件在bin目录下存在)File a is deleted!Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程

15、编程编程编程153.4 3.4 在在在在shellshell程序中使用的变量程序中使用的变量程序中使用的变量程序中使用的变量3.4.1 变量的赋值变量的赋值在shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,其格式如下:变量名变量名变量名变量名=值值值值例如:x=6a=How are you表示把6赋值给变量x,字符串“How are you”赋值给变量a。注意:等号(=)前后没有空格。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程163.4 3.4 在在在在shellshell程序中使用的变量程序中使

16、用的变量程序中使用的变量程序中使用的变量3.4.2 访问变量值访问变量值如果要访问变量值,可以在变量前面加一个美元符号“$”,例如:a=How are youecho He just said:a输出:He just said:How are you一个变量给另一个变量赋值可以写成:变量2=变量1例如:x=ii+可以写为:i=i+1Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程173.4 3.4 在在在在shellshell程序中使用的变量程序中使用的变量程序中使用的变量程序中使用的变量3.4.3 键盘读入键盘读入在shell程序设计中,变量

17、的值可以作为字符串从键盘读入,其格式为:read 变量例如:read strread strread为读入命令,它表示从键盘读入字符串到str。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程183.4 3.4 在在在在shellshell程序中使用的变量程序中使用的变量程序中使用的变量程序中使用的变量例3.4 编写一个shell程序test3,程序执行时从键盘读入一个目录名,然后显示这个目录下所有文件的信息。分析:设存放目录的变量为DIRECTORY,其读入语句为:read DIRECTORY显示文件的信息命令为:ls al(1)用vi编辑程

18、序rootlocalhost bin#vi test3#!/bin/shecho please input name of directory read DIRECTORYcd DIRECTORYls al(2)设置权限rootlocalhost bin#chmod+x test3(3)执行rootlocalhost bin#./test3Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程193.4 3.4 在在在在shellshell程序中使用的变量程序中使用的变量程序中使用的变量程序中使用的变量例3.5 运行程序test4,从键盘读入x、y的

19、值,然后做加法运算,最后输出结果。(1)用vi编辑程序rootlocalhost bin#vi test4#!/bin/shread x yz=expr x+yecho The sum is z(2)设置权限rootlocalhost bin#chmod+x test4(3)执行rootlocalhost bin#./test445 78The sum is 123注意:表达式z=expr x+y中的符号“”为键盘上的“”。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程203.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较3.5

20、.1 字符串比较字符串比较作用:测试字符串是否相等、长度是否为零,字符串是否为NULL。常用的字符串操作符如下表所示。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程21注意:“”后面和“”前面及等号“=”的前后都应有一空格;注意这里是程序的退出情况,如果ar1和ar2的字符串是不相等的为非正常退出,输出结果为1。例3.6 从键盘读入两个字符串,判断这两个字符串是否相等,如相等输出。(1)用vi编辑程序rootlocalhost bin#vi test5#!/bin/bashread ar1 read ar2 ar1 =ar2 echo$?#?

21、保存前一个命令的返回码(2)设置权限rootlocalhost bin#chmod+x test5(3)执行rootlocalhost root#./test5 aaabbb13.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程22注意:运行结果1表示ar的小于等于零,0表示ar的长度大于零。3.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较例3.7 比较字符串长度是否大于零。(1)用vi编辑程序rootlocalhost bin#vi test6#!/bin/bashr

22、ead ar -n ar echo?#保存前一个命令的返回码(2)设置权限rootlocalhost bin#chmod+x test6(3)执行rootlocalhost root#./test6Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程233.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较3.5.2 数字比较数字比较在bash shell编程中的关系运算有别于其他编程语言,用表中的运算符用test语句来表示大小的比较。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程24例

23、3.8 比较两个数字是否相等。(1)用vi编辑程序rootlocalhost bin#vi test7#!/bin/bashread x yif test x -eq y then echo x=y else echo x!=yfi(2)设置权限rootlocalhost bin#chmod+x test7(3)执行rootlocalhost bin#./test750 10050!=100rootlocalhost bin#./test7150 150150=1503.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较Linux网络管理员实用教程(第2版)第第第第3 3章章章章 S

24、hellShell编程编程编程编程253.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较3.5.3 逻辑操作逻辑操作在shell程序设计中的逻辑运算符号如下表所示。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程263.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较例3.9 分别给两个字符变量赋值,一个变量赋予1111的值,另一个变量为空,求两者的与、或操作。(1)用vi编辑程序rootlocalhost bin#vi test8#!/bin/bashpart1=1111part2=#part2为空 part1 -a

25、 part2 echo?#保存前一个命令的返回码 part1 -o part2 echo?(2)设置权限rootlocalhost bin#chmod+x test8(3)执行rootlocalhost bin#./test810Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程273.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较3.5.4 文件操作文件操作文件测试表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,在下表中只列举一些常用的操作符。Linux网络管理员实

26、用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程28例3.10 判断zb目录是否存在于/root下。(1)用vi编辑程序rootlocalhost bin#vi test9#!/bin/bash-d /root/zb echo?#保存前一个命令的返回码(2)设置权限rootlocalhost bin#chmod+x test9(3)执行rootlocalhost bin#./test9#假设/root下没有zb目录1(4)在/root添加zb目录rootlocalhost bin#mkdir/root/zb(5)执行rootlocalhost bin#./test9

27、0注意:运行结果是返回参数“$?”,结果1表示判断的目录不存在,0表示判断的目录存在。3.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程293.5 3.5 表达式的比较表达式的比较表达式的比较表达式的比较例3.11 编写一个shell程序test10,输入一个字符串,如果是目录,则显示目录下的信息,如为文件,则显示文件的内容。(1)用vi编辑程序 rootlocalhost bin#vi test10#!/bin/bashecho Please enter the directory

28、 name or file nameread DORFif -d DORF then ls DORF elif -f DORF thencat DORFelse echo input error!fi(2)设置权限rootlocalhost bin#chmod+x test10(3)执行rootlocalhost bint#./test10Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程303.6 3.6 循环结构语句循环结构语句循环结构语句循环结构语句shell常见的循环语句有for循环、while循环和until循环。3.6.1 for循环

29、循环语法:for 变量 in 列表 do 操作 done注意:变量要在循环内部用来指代列表中的对象。列表是在for循环的内部要操作的对象,可以是字符串也可以是文件,如果是文件则为文件名。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程31例3.12 在列表中的值:a,b,c,e,i,2,4,6,8用循环的方式把字符与数字分成两行输出。(1)用gedit编辑脚本程序test11rootlocalhost bin#gedit test11#!/bin/shfor i in a,b,c,e,i 2,4,6,8 do echo i done(2)设置权

30、限rootlocalhost bin#chmod+x test11(3)执行rootlocalhost bin#./test11a,b,c,e,i2,4,6,8注意:在循环列表中的空格可表示换行。3.6 3.6 循环结构语句循环结构语句循环结构语句循环结构语句Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程323.6 3.6 循环结构语句循环结构语句循环结构语句循环结构语句例3.13 删除垃圾箱中的所有文件。分析:在本机中,垃圾箱的位置在$HOME/.Trash中,因而是删除$HOME/.Trash列表中的所有文件,程序脚本如下。(1)用ged

31、it编辑脚本程序test12rootlocalhost bin#gedit test12#!/bin/shfor i in HOME/.Trash/*do rm i echo i has been deleted!done(2)设置权限rootlocalhost bin#chmod+x test12(3)执行rootlocalhost bin#./test12/root/.Trash/abc has been deleted!/root/.Trash/abc1 has been deleted!Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程3

32、33.6 3.6 循环结构语句循环结构语句循环结构语句循环结构语句注意:for语句中的双括号不能省,最后的分号可有可无,表达式total=expr$total+$j的加号两边的空格不能省,否则会成为字符串的连接。例3.14 求从1100的和。(1)用gedit编辑脚本程序test13rootlocalhost bin#gedit test13#!/bin/shtotal=0for(j=1;j=100;j+);do total=expr total+j doneecho The result is total(2)设置权限rootlocalhost bin#chmod+x test13(3)执行

33、rootlocalhost bin#./test13The result is 5050Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程343.6 3.6 循环结构语句循环结构语句循环结构语句循环结构语句3.6.2 while循环循环 语法:while 表达式 do 操作 done只要while表达式为真,do和done之间的操作就一直会进行。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程353.6 3.6 循环结构语句循环结构语句循环结构语句循环结构语句例3.15 用while循环求1100

34、的和。(1)用gedit编辑脚本程序test14rootlocalhost bin#gedit test14 total=0 num=0 while(num=100);do total=expr total+num (num+=1)#表示把表达式转换为命令 done echo The result is total(2)设置权限rootlocalhost bin#chmod+x test14(3)执行rootlocalhost bin#./test14The result is 5050Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程363.6

35、 3.6 循环结构语句循环结构语句循环结构语句循环结构语句3.6.3 until循环循环语法:until 表达式do 操作done重复do和done之间的操作直到表达式成立为止。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程373.6 3.6 循环结构语句循环结构语句循环结构语句循环结构语句例3.16 用until循环求1100的和。(1)用gedit编辑脚本程序test15rootlocalhost bin#gedit test15total=0num=0until num-gt 100 do total=expr total+num nu

36、m=expr num+1doneecho The result is total(2)设置权限rootlocalhost bin#chmod+x test15(3)执行rootlocalhost bin#./test15The result is 5050Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程383.7 3.7 条件结构语句条件结构语句条件结构语句条件结构语句shell程序中的条件语句主要有if语句与case语句。3.7.1 if语句语句语法:if 表达式1 then操作elif 表达式2 then操作elif 表达式3 then操作

37、else操作fiLinux里的if的结束标志是将if反过来写成fi;而elif其实是else if的缩写。其中elif理论上可以有无限多个。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程393.7 3.7 条件结构语句条件结构语句条件结构语句条件结构语句例3.17 用for循环输出110间的奇数。(1)用gedit编辑脚本程序test16rootlocalhost bin#gedit test16for(j=0;j=10;j+)do if(j%2=1)then echo j fi done(2)设置权限rootlocalhost bin#ch

38、mod+x test16(3)执行:rootlocalhost bin#./test1613579Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程403.7 3.7 条件结构语句条件结构语句条件结构语句条件结构语句例3.18 判断你的Linux系统是否已安装计算器程序,如已安装,执行计算器程序并进行各种算术运算。rootlocalhost bin#gedit jsqclear cd/usr/bin if -f gnome-calculator then gnome-calculator else echo Your system dont ha

39、ve the CACULATER!echo Press any key to return.fi cd2)设置权限:rootlocalhost bin#chmod+x jsq3)执行:rootlocalhost bin#./jsqLinux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程413.7 3.7 条件结构语句条件结构语句条件结构语句条件结构语句3.7.2 case语句语句语法:case 表达式 in值1|值2)操作;值3|值4)操作;值5|值6)操作;*)操作;esaccase的作用就是当字符串与某个值相同时就执行那个值后面的操作。如果同一个操

40、作对于多个值,则使用“|”将各个值分开。在case的每一个操作的最后面都有两个“;”分号是必须的。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程423.7 3.7 条件结构语句条件结构语句条件结构语句条件结构语句例3.19 Linux是一个多用户操作系统,编写一程序根据不同的用户登录输出不同的反馈结果。(1)用vi编辑脚本程序test17rootlocalhost bin#vi test17#!/bin/shcase USER in beechen)echo You are beichen!;liangnian)echo You are li

41、angnian;/注意这里只有一个分号 echo Welcome!;/这里才是两个分号 root)echo You are root!;echo Welcome!;/两命令写在一行,用分号作分隔符 *)echo Who are you?$USER?;esacLinux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程433.7 3.7 条件结构语句条件结构语句条件结构语句条件结构语句(2)设置权限rootlocalhost bin#chmod+x test17(3)执行rootlocalhost bin#./test17You are rootWelcom

42、e!Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程443.8 3.8 在在在在shellshell脚本中使用函数脚本中使用函数脚本中使用函数脚本中使用函数shell程序也支持函数。函数能完成一个特定的功能,可以重复调用这个函数。函数格式如下:函数名()函数体函数调用方式为函数名函数名 参数列表参数列表Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程45例3.20 编写一函数add求两个数的和,这两个数用位置参数传入,最后输出结果。(1)编辑代码rootlocalhost bin#vi test

43、18#!/bin/shadd()a=1 b=2 z=expr a+b echo The sum is$zadd 1 2 (2)修改权限rootlocalhost bin#chmod+x test18(3)程序运行结果rootlocalhost bin#./test18 10 20The sum is 30注意:函数定义完成后必须同时写出函数的调用,然后对此文件进行权限设定,再执行此文件。3.8 3.8 在在在在shellshell脚本中使用函数脚本中使用函数脚本中使用函数脚本中使用函数Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程46在she

44、ll脚本的执行过程中,shell脚本支持调用另一个shell脚本。调用的格式为:程序名程序名例3.21 在shell脚本test19中调用test20。(1)用vi编辑test19和test20的代码#test19脚本#!/bin/shecho The main name is 0./test20echo the first string is 1#test20脚本#!/bin/shecho How are you USER?3.9 3.9 在在在在shellshell脚本中调用其他脚本中调用其他脚本中调用其他脚本中调用其他shellshell脚本脚本脚本脚本Linux网络管理员实用教程(第2

45、版)第第第第3 3章章章章 ShellShell编程编程编程编程47(2)修改权限rootlocalhost bin#chmod+x test19rootlocalhost bin#chmod+x test20(3)程序运行结果rootlocalhost bin#./test19 abc123The main name is./test19How are you root?the first string is abc123注意:1)在Linux编辑中命令区分大小写字符。2)在shell语句中加入必要的注释,以便以后阅读和维护,注释以#开头。3)对shell变量进行数字运算时,使用乘法符号*时

46、,要用转义字符进行转义。4)由于shell对命令中多余的空格不进行任何处理,因此程序员可以利用这一特性调整程序缩进,达到增强程序可读性的效果。5)在对函数命名时最好能使用有含义且容易理解的名字,即使函数名能够比较准确地表达函数所完成的任务。同时建议对于较大的程序要建立函数命名和变量命名对照表。3.9 3.9 在在在在shellshell脚本中调用其他脚本中调用其他脚本中调用其他脚本中调用其他shellshell脚本脚本脚本脚本Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程48演示:综合实例 3.10 3.10 综合实例综合实例综合实例综合实例

47、Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程49思考与实验思考与实验思考与实验思考与实验1编写一个shell程序,此程序的功能是:显示root下的文件信息,然后建立一个abc的文件夹,在此文件夹下新建一个文件,修改此文件的权限为可执行。2编写一个shell程序,挂载U盘,把U盘中根目录下所有.c文件拷贝到当前目录,然后卸载U盘。3编写一个shell程序,程序执行时从键盘读入一个文件名,然后创建这个文件。4编写一个shell程序,键盘输入两个字符串,比较两个字符串是否相等。5编写三个shell程序,分别用for、while与untill求从2+4+100的和。6编写一个shell程序,键盘输入两个数及+、*与/中的任一运算符,计算这两个数的运算结果。7编写两个shell程序kk及aa,在kk中输入两个数,调用aa计算这两个数之间奇数的和。8编写shell程序,可以挂载U盘,也可挂载Windows硬盘的分区,并可对文件进行操作。9编写4个函数分别进行算术运算+、*、/,并编写一个菜单,实现运算命令。Linux网络管理员实用教程(第2版)第第第第3 3章章章章 ShellShell编程编程编程编程50谢谢!谢谢!谢谢!谢谢!

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

当前位置:首页 > 应用文书 > 工作报告

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

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