实验4 SHELL脚本的编写(一)

上传人:hs****ma 文档编号:475412112 上传时间:2022-12-10 格式:DOCX 页数:7 大小:130.28KB
返回 下载 相关 举报
实验4 SHELL脚本的编写(一)_第1页
第1页 / 共7页
实验4 SHELL脚本的编写(一)_第2页
第2页 / 共7页
实验4 SHELL脚本的编写(一)_第3页
第3页 / 共7页
实验4 SHELL脚本的编写(一)_第4页
第4页 / 共7页
实验4 SHELL脚本的编写(一)_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《实验4 SHELL脚本的编写(一)》由会员分享,可在线阅读,更多相关《实验4 SHELL脚本的编写(一)(7页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

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

6、 通过如下命令获得并修改:# 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 中有三种变量:# 环境变量:系统环境的一部分,通常不必去定义。个别如PATH变量可 以修改。# 内部变量:由系统提供,不可修改。用户

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

8、 使用。常用的内部变量有:$1-$9(脚本命令行参数)、$0(脚本名)、$#(命令行参数 个数)、$?(上一个命令的返回值)、$*(所有命令行参数)、$(脚本的进程号)等。 请运行以下脚本例子,并将结果以截图形式附于例子后。例子:内部变量$#、$0、$*,可对脚本改动,査看其他内部变量的值。#!/bin/sh#my test programecho number of parameters is $#echo program name is $0echo parameters as a single string is $*例子:内部变量的使用。注意在脚本运行时要分为两种情况:给定参数和不给定

9、参数(为什么?)#!/bin/sh#name display programif $# -eq 0 thenecho name not providedelseecho your name is $1fiTaotwtocalhost 7displayrooocalhost .= chmod 十x displayrotwtocalhost .= ./displayname rn)L provided用户变量是指由用户在编写脚本时定义的变量。变量可定义为整型或字符 串,也可设定常量以及构建数组。但由于脚本语言主要用来编写系统管理的程序。 因此 shell 编程语言实际不需要定义变量类型而直接使用。

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

11、量,然后在hello脚本中 对其访问,注意如果变量xxx和yyy的值的差异。#xxx=121#yyy=212#export xxx编写脚本并观察输出结果:#!/bin/shecho hello world !echo xxx=$xxxecho yyy=$yyy| rocillcical host | rocillcical host | rocillcical host | rocillcical host | rocillcical host | racial acai host he a ffor-d xxx=-vi display=xxk=121 yyyWV.二 vi hela=ch m

12、ad 十 x he .-.f .=./heayyy=| racial acai host .= export xxx| racial acai host .= ./heche a ffor-d xxx=121yyy=| racial acai host .-2.5 shell 脚本的特殊符号(1) 引号在 shell 中引号分为三种:双引号,单引号和反引号。当一个字符串中嵌入 了空格时,双引号能让Shell对该字符串以一个整体来解释,否则Shell将会分 别作为命令处理而出错。请运行以下脚本例子,并将结果以截图形式附于例子后。 例子:双引号的使用。注意变量在双弓I号中同样能被访问。#!/bin

13、/shvar=test stringnewvar=value of var is $varecho $newvarvalue of var is test stringocalhosl “.二讥 arocalhosl .二 chmad 十x varraotL ocalhosl .二./arvs. Lie. :) var is Lcsl sLri ngraotlocalhosl .二由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以 后,也会失去原有意义,而只作为普通字符解释。这样做能够阻止Shell解释一 个变量。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:单引号的使

14、用。#!/bin/shvar = test stringnewvar = value of var is $varecho $newvar反引号、:反引号能告诉Shell执行由反引号所定义的字符串(实质为一命令 行)。当需要把执行命令的结果存放在一个变量中时,就可以在Shell程序中使用 反引号。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:反引号的使用。#!/bin/shstring=”current directory is、pwd”echo $string2) 反斜杠反斜杠:能够阻止shell把后面的字符解释为特殊字符。如:#var=$test#echo $var3) 注释符在

15、 shell 编程中经常要对某些正文行进行注释,以增加程序的可读性。在 Shell 中以字符“#”开头的正文行表示注释行。在本实验教材中所有例子的命 令行以“#”表示,注意与解释符区分开来。作业:(1)将第2节实验内容中标注为例子的shel 1脚本代码执行并将运行的截图附 于每个例子之后。( 2) 编写一个脚本,显示当前日期及工作目录,并列出有多少个用户在系统上 工作。raotoi:cca host “ .vi al raotoi:cca host “ .chmod 十x al raotoi:cca host J,/al :2013 帖月 25 H 星期一00: 40:右 CST/rooLroot:02013)3-24 23 : 55rootpts/12013)3-24 23 : 55 (:0.0)| raaLlcical host “

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

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号