实验4SHELL脚本的编写(一)_第1页
实验4SHELL脚本的编写(一)_第2页
实验4SHELL脚本的编写(一)_第3页
实验4SHELL脚本的编写(一)_第4页
实验4SHELL脚本的编写(一)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学院:姓名: 实验地点计科院广东技术师范学院实验报告专业:班级:成绩:学号::组员:实验日期:旨导教师签名:预习情况操作情况考勤情况数据处理情况1、实验 4 项目名称:SHELL脚本的编写(一)实验目的通过对典型的SHELL脚本进行验证,以及编写具有一定实用程度的SHELL脚本,理解并掌握SHELL脚本的基本编写方法。2、实验内容2.1什么是shell脚本要明白什么是shell脚本,首先要理解什么是脚本(script)。脚本是指一种未 经编译而直接解释执行的程序,最典型例子就是javascri pt程序。我们知道,程序代码写好后,有两种方式让它执行。一是通过编译器编译成二进制执行代码后 提交给

2、系统执行,而另一种则不经过编译,直接送给解释器解释执行。shell脚本指的就是一种通过shell来解释并执行的程序。UNIX中的shell, 它既是一个界面程序,又是一个脚本的解释器,同时又能提供一种功能丰富的脚 本语言供用户编写脚本程序。用户只需要通过 vi等编辑器将脚本编写好(脚本 本身上还是一个文本),通过命令行的形式提交给shell, shell便会对其解释并执 行了。2.2 shel I脚本与系统管理Shell脚本在系统管理上占有重要的位置。原因在于系统管理的日常工作许多 都是常规化的,例如日志管理、重要数据备份、账户管理、文件系统清理等工作, 一次性地编写一个管理脚本程序, 就能避

3、免重复的管理工作。当然,现在有许多 管理工具供管理员使用,不是任何工作都需要编写一个shell脚本。不过任何一个管理工具都不可能为特定某个应用业务度身定制,针对当前应用业务的需要编 写shell脚本属于高级系统管理员应具备的能力。此外,有一个问题值得讨论,利用其它高级语言也一样可以写管理程序,为 什么要用shell脚本语言?这在于shell脚本最终提交给shell解释执行,因此可 直接在程序中使用各种shell命令(c程序是不可能这样做的)。这些shell命令从 操作系统管理的角度来看,都涉及到系统资源申请、使用和释放,shell脚本只API函数调通过简单的命令即可实现,而高级语言却需要复杂的

4、、大量的系统用。同学们回顾之前实验中的作业题, 每一题只需一到两条shell命令即可完成, 但如果用c语言编写相应的程序,也许不可能几条语句就可以实现的了。关于shell脚本的编写是一个很大的话题,本实验介绍基本的shell程序编写, 通过对shell脚本编写的初步学习,理解系统管理中脚本的作用,掌握一些基本 的脚本编写方法。以下所给例子均在 bash下运行和测试过。2.3创建和执行shell脚本我们通过建立一个“hello world ”程序来认识shell脚本是如何创建和执行的。 以下是“ hello world”的shell脚本程序的内容,请用vi编辑器录入并将其保存 为hello文件。

5、#!/bi n/shecho hello world !然后按如下方式执行程序并得出相应结果:# chmod +x hello#./hellohello world !关于shell脚本创建和运行的几点说明:(1) 在bash中,每一个脚本的开头,必须有:#! /bin/sh(2)必须将脚本文件设置为可执行,即# chmod +x myp rogram或者,使用如下方式执行shell脚本:# . myp rogram(3) 如果shell脚本所放置的目录并不在当前所查找的路径中,可把这个目录名 添加到查找路径中,那么就可以命令的形式执行该脚本。系统默认的查找路径可 通过如下命令获得并修改:#

6、echo $PAtH/usr/li nu x/bin:/usr/bi n:/etc:/usr/sbi n:/usr/ucb:/usr/bi n/X11:/sbi n:/usr/java14/jre/bi n: /usr/java14/b in2.4 shel I脚本的变量如之前所述,shell脚本主要用在系统管理方面,shell脚本语言往往并不强调 数学运算等功能,因此shell脚本的变量的类型和使用的形式比较单一。(1)变量的类型shell中有三种变量:环境变量:系统环境的一部分,通常不必去定义。个别如PATH变量可以修改。内部变量:由系统提供,不可修改。用户变量:在编写shell脚本时所定

7、义的,可在脚本内修改和使用。环境变量是指UNIX为用户配置系统而提供的一些基本变量。环境变量有许 多,但一般来说如下一些环境变量比较常用:PATH(命令搜索路径)、ENV启动脚本的路径名)、PS1(命令行提示符)、SHELL(当前系统使用的shell类型)、 HOME!户登录主目录)。用户可改动这些环境变量来实现定制系统环境的目的, 最常见的有改动命令行提示符,以下是一个相关例子,同学们可在Linux系统下 做这个实验。#P S仁LOGNAME$myhost $PWD $内部变量是指shell的一些预定义变量,提供给用户在程序运行时做判断和 使用。常用的内部变量有:$1-$9(脚本命令行参数)

8、、$0(脚本名)、$#(命令行参数 个数)、$?(上一个命令的返回值)、$*(所有命令行参数)、$(脚本的进程号)等。 请运行以下脚本例子,并将结果以截图形式附于例子后。例子:内部变量$#、$0、$*,可对脚本改动,查看其他内部变量的值。#!/bi n/sh#my test p rogramecho nu mber of p arameters is $#echo p rogram n ame is $0echo p arameters as a si ngle stri ng is $*玄件编辑査看也)终端 标签帮助rootwlocalhostvi testroot&local ho&t -

9、 chuKid + testrooti&loral hosL. /tesVnumber of parameters is 0proeram name is ./ueslparaincters as a single isrooLOfl oral host = ./test Enumber of parameters is 1prog ram nainc i s . /testparameters as a single ie Srootlocalhost例子:内部变量的使用。注意在脚本运行时要分为两种情况:给定参数和不给 定参数(为什么?)。#!/bi n/sh#n ame dis play

10、p rogramif $# -eq 0 the necho n ame not pro videdelseecho your n ame is $1firootjlocal hostvi di splayrootttlocalhostthmd 十x displayrootlocalhost *- ./display name not prov用户变量是指由用户在编写脚本时定义的变量。变量可定义为整型或字符 串,也可设定常量以及构建数组。但由于脚本语言主要用来编写系统管理的程序。 因此shell编程语言实际不需要定义变量类型而直接使用。同一个变量既可以用 来存放整型值,也可以存放字符和字符串,也

11、可以交替存放不同类型的数值。 下 面结合变量的赋值和访问来介绍用户变量的使用。(2) 变量的赋值和访问在shell中变量可直接使用而定义其类型。如:count=0myn ame=jackfile name= today back up 注意变量赋值时“=”左右没有空格。变量使用在脚本编程中,可以直接在shell的命令行中输入,如果要对访问变量的值,则通过“$”标识,如果需要让其成为全局变量,可用export命令输出,则在其他脚本上可使用该变量。 请运行以下 脚本例子,并将结果以截图形式附于例子后。例子:在命令行中定义一个变量,并将其输出为全局变量,然后在hello脚本中对其访问,注意如果变量X

12、XX和yyy的值的差异。#xxx=121#yyy=212#export xxx编写脚本并观察输出结果:#!/bi n/shecho hello world ! echo xxx=$xxx echo yyy=$yyyrootlocal host =Vi displayro*Dt*local hosl rootlocalhost yyy=212rootlocalhostvt hellorootlocalhostc hmod +x hellorootolocalhost )- hello world,/helloX兀x =yyy=rootolocalhost J宁export xxxrootttlo

13、calhost *= hcllo world!./helloyyy=rootlocalhosL12.5 shel I脚本的特殊符号(1) 引号在shell中引号分为三种:双引号,单引号和反引号。当一个字符串中嵌入 了空格时,双引号能让Shell对该字符串以一个整体来解释,否则Shell将会分 别作为命令处理而出错。请运行以下脚本例子,并将结果以截图形式附于例子后。 例子:双引号的使用。注意变量在双引号中同样能被访问。#!/bi n/shvar=test stri ngn ewvar=value of var is $varecho $n ewvarvalue of var is test st

14、ri ngvi var-chinod 十兀 varrootolocal host =Lroot&l ocal host *rootlocal host * A ar valuc of var is test stringrootl ocal host *-由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以 后,也会失去原有意义,而只作为普通字符解释。这样做能够阻止Shell解释一个变量。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:单引号的使用。#!/bi n/shvar = test stri ng newvar = value of var is $Var echo

15、 $n ewvar文件 编! 查看5缪端 标签 帮助 rootlocalhost *= v i varroatMocalhost “ * A arvalue of var is Svarrootlocalhost -反引号反引号能告诉Shell执行由反引号所定义的字符串(实质为一命令 行)。当需要把执行命令的结果存放在一个变量中时,就可以在Shell程序中使用 反引号。请运行以下脚本例子,并将结果以截图形式附于例子后。 例子:反引号的使用。#!/bin/shstring=decho $stri ng文件编辑查看也 终端标签帮助(H) rootBlocal host vt varrootloca

16、lhost :三./varvaluc of var is arrootlocaJ host = vt stringrootilocal host chmod + slrfngrootilocal host - ./string, current di rectory i & /root rootlocalhost *=(2)反斜杠反斜杠能够阻止shell把后面的字符解释为特殊字符。如:#var=$test#echo $var(3) 注释符在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。在 Shell中以字符“ #”开头的正文行表示注释行。在本实验教材中所有例子的命 令行以“#

17、”表示,注意与解释符区分开来。作业:(1)(2)将第2节实验内容中标注为例子的shell脚本代码执行并将运行的截图附 于每个例子之后。rooHjl ocalhost I root(localhost I. root ocalhost 送013年03月250 /root root:0rootpts/lroDl DC al host十 Vi allchmod 十X al 11= ,/aJl星期一 00:40:552013-03=242013-03-24CST23:5523:55 (:0,0)编写一个脚本,显示当前日期及工作目录,并列出有多少个用户在系统上 工作。(3)编写脚本接受用户的输入参数,如果用户所给参数个数为1个则将该参数 记录在文件record中,否则在屏幕上输出错误提示信息。文件 编说查看包 终端标签 帮助vt plsy chmod +x play/playI TO)llocalhostroQtlocalhostfrootlocalhost ftrong input *-/play eoodrootedocalhosl 1E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论