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

下载本文档

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

文档简介

广东技术师范学院实验报告学院: 计算机科学学院专业:软件工程班级:09软件成绩:姓名:学号:组别:组员:实验地点:工业中心204实验日期:2011.9.22指导教师签名:预习情况操作情况考勤情况数据处理情况实验 4 项目名称: SHELL脚本的编写(一) 1、 实验目的通过对典型的SHELL脚本进行验证,以及编写具有一定实用程度的SHELL脚本,理解并掌握SHELL脚本的基本编写方法。2、 实验内容2.1什么是shell脚本要明白什么是shell脚本,首先要理解什么是脚本(script)。脚本是指一种未经编译而直接解释执行的程序,最典型例子就是javascript程序。我们知道,程序代码写好后,有两种方式让它执行。一是通过编译器编译成二进制执行代码后提交给系统执行,而另一种则不经过编译,直接送给解释器解释执行。shell脚本指的就是一种通过shell来解释并执行的程序。UNIX中的shell,它既是一个界面程序,又是一个脚本的解释器,同时又能提供一种功能丰富的脚本语言供用户编写脚本程序。用户只需要通过vi等编辑器将脚本编写好(脚本本身上还是一个文本),通过命令行的形式提交给shell,shell便会对其解释并执行了。2.2 shell脚本与系统管理Shell脚本在系统管理上占有重要的位置。原因在于系统管理的日常工作许多都是常规化的,例如日志管理、重要数据备份、账户管理、文件系统清理等工作,一次性地编写一个管理脚本程序,就能避免重复的管理工作。当然,现在有许多管理工具供管理员使用,不是任何工作都需要编写一个shell脚本。不过任何一个管理工具都不可能为特定某个应用业务度身定制,针对当前应用业务的需要编写shell脚本属于高级系统管理员应具备的能力。此外,有一个问题值得讨论,利用其它高级语言也一样可以写管理程序,为什么要用shell脚本语言?这在于shell脚本最终提交给shell解释执行,因此可直接在程序中使用各种shell命令(c程序是不可能这样做的)。这些shell命令从操作系统管理的角度来看,都涉及到系统资源申请、使用和释放,shell脚本只通过简单的命令即可实现,而高级语言却需要复杂的、大量的系统API函数调用。同学们回顾之前实验中的作业题,每一题只需一到两条shell命令即可完成,但如果用c语言编写相应的程序,也许不可能几条语句就可以实现的了。关于shell脚本的编写是一个很大的话题,本实验介绍基本的shell程序编写,通过对shell脚本编写的初步学习,理解系统管理中脚本的作用,掌握一些基本的脚本编写方法。以下所给例子均在bash下运行和测试过。2.3 创建和执行shell脚本我们通过建立一个“hello world”程序来认识shell脚本是如何创建和执行的。以下是“hello world”的shell脚本程序的内容,请用vi编辑器录入并将其保存为hello文件。#!/bin/shecho hello world !然后按如下方式执行程序并得出相应结果:# chmod +x hello#./hellohello world !关于shell脚本创建和运行的几点说明:(1)在bash中,每一个脚本的开头,必须有:#! /bin/sh(2)必须将脚本文件设置为可执行,即# chmod +x myprogram或者,使用如下方式执行shell脚本:# . myprogram(3)如果shell脚本所放置的目录并不在当前所查找的路径中,可把这个目录名添加到查找路径中,那么就可以命令的形式执行该脚本。系统默认的查找路径可通过如下命令获得并修改:# echo $PATH/usr/linux/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin2.4 shell脚本的变量如之前所述,shell脚本主要用在系统管理方面,shell脚本语言往往并不强调数学运算等功能,因此shell脚本的变量的类型和使用的形式比较单一。(1) 变量的类型shell中有三种变量:l 环境变量:系统环境的一部分,通常不必去定义。个别如PATH变量可以修改。l 内部变量:由系统提供,不可修改。l 用户变量:在编写shell脚本时所定义的,可在脚本内修改和使用。环境变量是指UNIX为用户配置系统而提供的一些基本变量。环境变量有许多,但一般来说如下一些环境变量比较常用:PATH(命令搜索路径)、ENV(启动脚本的路径名)、PS1(命令行提示符)、SHELL(当前系统使用的shell类型)、HOME(用户登录主目录)。用户可改动这些环境变量来实现定制系统环境的目的,最常见的有改动命令行提示符,以下是一个相关例子,同学们可在Linux系统下做这个实验。#PS1=$LOGNAME$myhost $PWD $ 内部变量是指shell的一些预定义变量,提供给用户在程序运行时做判断和使用。常用的内部变量有:$1-$9(脚本命令行参数)、$0(脚本名)、$#(命令行参数个数)、$?(上一个命令的返回值)、$*(所有命令行参数)、$(脚本的进程号)等。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:内部变量$#、$0、$*,可对脚本改动,查看其他内部变量的值。#!/bin/sh#my test programecho number of parameters is $#echo program name is $0echo parameters as a single string is $*例子:内部变量的使用。注意在脚本运行时要分为两种情况:给定参数和不给定参数(为什么?)。#!/bin/sh#name display programif $# -eq 0 then echo name not providedelse echo your name is $1fi用户变量是指由用户在编写脚本时定义的变量。变量可定义为整型或字符串,也可设定常量以及构建数组。但由于脚本语言主要用来编写系统管理的程序。因此shell编程语言实际不需要定义变量类型而直接使用。同一个变量既可以用来存放整型值,也可以存放字符和字符串,也可以交替存放不同类型的数值。下面结合变量的赋值和访问来介绍用户变量的使用。(2) 变量的赋值和访问在shell中变量可直接使用而定义其类型。如:count=0myname=jackfilename=today backup注意变量赋值时“=”左右没有空格。变量使用在脚本编程中,可以直接在shell的命令行中输入,如果要对访问变量的值,则通过“$”标识,如果需要让其成为全局变量,可用export命令输出,则在其他脚本上可使用该变量。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:在命令行中定义一个变量,并将其输出为全局变量,然后在hello脚本中对其访问,注意如果变量xxx和yyy的值的差异。#xxx=121#yyy=212#export xxx编写脚本并观察输出结果:#!/bin/shecho hello world !echo xxx=$xxxecho yyy=$yyy2.5 shell脚本的特殊符号(1) 引号在shell中引号分为三种:双引号,单引号和反引号。当一个字符串中嵌入了空格时,双引号能让Shell对该字符串以一个整体来解释,否则Shell将会分别作为命令处理而出错。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:双引号的使用。注意变量在双引号中同样能被访问。#!/bin/shvar=test stringnewvar=value of var is $varecho $newvarvalue of var is test string由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。这样做能够阻止Shell解释一个变量。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:单引号的使用。#!/bin/shvar = test stringnewvar = value of var is $varecho $newvar反引号:反引号能告诉Shell执行由反引号所定义的字符串(实质为一命令行)。当需要把执行命令的结果存放在一个变量中时,就可以在Shell程序中使用反引号。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:反引号的使用。#!/bin/shstring=”current directory is pwd”echo $string(2) 反斜杠反斜杠:能够阻止shell把后面的字符解释为特殊字符。如:#var=$test#echo $var(3) 注释符在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。在Shell中以字符“#”开头的正文行表示注释行。在本实验教材中所有例子的命令行以“#”表示,注意与解释符区分开来。作业:(1) 将第2节实验内容

温馨提示

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

评论

0/150

提交评论