实验4 SHELL脚本的编写(一)
更新时间:2023-10-10 08:47:01 阅读量: 综合文库 文档下载
- 实验4推荐度:
- 相关推荐
广东技术师范学院实验报告
学院: 姓名: 实验地点: 预习情况 实验 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/sh
echo hello world !! 然后按如下方式执行程序并得出相应结果:
# chmod +x hello #./hello
hello 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/bin
2.4 shell脚本的变量 如之前所述,shell脚本主要用在系统管理方面,shell脚本语言往往并不强调数学运算等功能,因此shell脚本的变量的类型和使用的形式比较单一。 (1) 变量的类型
shell中有三种变量:
? 环境变量:系统环境的一部分,通常不必去定义。个别如PATH变量可
以修改。
? 内部变量:由系统提供,不可修改。
? 用户变量:在编写shell脚本时所定义的,可在脚本内修改和使用。 环境变量是指UNIX为用户配置系统而提供的一些基本变量。环境变量有许多,但一般来说如下一些环境变量比较常用:PATH(命令搜索路径)、ENV(启动脚本的路径名)、PS1(命令行提示符)、SHELL(当前系统使用的shell类型)、HOME(用户登录主目录)。用户可改动这些环境变量来实现定制系统环境的目的,最常见的有改动命令行提示符,以下是一个相关例子,同学们可在Linux系统下做这个实验。
#PS1=’$LOGNAME@$myhost $PWD \\$ ’
内部变量是指shell的一些预定义变量,提供给用户在程序运行时做判断和使用。常用的内部变量有:$1-$9(脚本命令行参数)、$0(脚本名)、$#(命令行参数个数)、$?(上一个命令的返回值)、$*(所有命令行参数)、$$(脚本的进程号)等。请运行以下脚本例子,并将结果以截图形式附于例子后。
例子:内部变量$#、$0、$*,可对脚本改动,查看其他内部变量的值。 #!/bin/sh
#my test program
echo \echo \
echo \
例子:内部变量的使用。注意在脚本运行时要分为两种情况:给定参数和不给定参数(为什么?)。 #!/bin/sh
#name display program if [ $# -eq 0 ] then
echo \else
echo \fi
用户变量是指由用户在编写脚本时定义的变量。变量可定义为整型或字符串,也可设定常量以及构建数组。但由于脚本语言主要用来编写系统管理的程序。因此shell编程语言实际不需要定义变量类型而直接使用。同一个变量既可以用来存放整型值,也可以存放字符和字符串,也可以交替存放不同类型的数值。下面结合变量的赋值和访问来介绍用户变量的使用。
(2) 变量的赋值和访问
在shell中变量可直接使用而定义其类型。如: count=0
myname=jack
filename=‘today backup’
注意变量赋值时“=”左右没有空格。变量使用在脚本编程中,可以直接在shell的命令行中输入,如果要对访问变量的值,则通过“$”标识,如果需要让其成为全局变量,可用export命令输出,则在其他脚本上可使用该变量。请运行以下脚本例子,并将结果以截图形式附于例子后。
例子:在命令行中定义一个变量,并将其输出为全局变量,然后在hello脚本中对其访问,注意如果变量xxx和yyy的值的差异。
#xxx=121 #yyy=212 #export xxx 编写脚本并观察输出结果: #!/bin/sh
echo hello world !! echo xxx=$xxx echo yyy=$yyy
2.5 shell脚本的特殊符号 (1) 引号
在shell中引号分为三种:双引号,单引号和反引号。当一个字符串中嵌入了空格时,双引号能让Shell对该字符串以一个整体来解释,否则Shell将会分别作为命令处理而出错。请运行以下脚本例子,并将结果以截图形式附于例子后。 例子:双引号的使用。注意变量在双引号中同样能被访问。 #!/bin/sh
var=\
newvar=\echo $newvar
value of var is test string
由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。这样做能够阻止Shell解释一个变量。请运行以下脚本例子,并将结果以截图形式附于例子后。 例子:单引号的使用。
#!/bin/sh
var = ‘test string’
newvar = ‘value of var is $var’ echo $newvar
反引号‘`’:反引号能告诉Shell执行由反引号所定义的字符串(实质为一命令行)。当需要把执行命令的结果存放在一个变量中时,就可以在Shell程序中使用反引号。请运行以下脚本例子,并将结果以截图形式附于例子后。 例子:反引号的使用。
#!/bin/sh
string=”current directory is `pwd`” echo $string
(2) 反斜杠
反斜杠‘\\’:能够阻止shell把后面的字符解释为特殊字符。如: #var=\\$test #echo $var
(3) 注释符
在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。在Shell中以字符“#”开头的正文行表示注释行。在本实验教材中所有例子的命令行以“#”表示,注意与解释符区分开来。
作业:
(1) 将第2节实验内容中标注为例子的shell脚本代码执行并将运行的截图附
于每个例子之后。
(2) 编写一个脚本,显示当前日期及工作目录,并列出有多少个用户在系统上
工作。
(3) 编写脚本接受用户的输入参数,如果用户所给参数个数为1个则将该参数
记录在文件record中,否则在屏幕上输出错误提示信息。
(4) 定义两个公共变量x,y并对其赋值。编写一个脚本,实现x,y的值交换,
在屏幕上输出x,y交换值前后的结果。
在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。在Shell中以字符“#”开头的正文行表示注释行。在本实验教材中所有例子的命令行以“#”表示,注意与解释符区分开来。
作业:
(1) 将第2节实验内容中标注为例子的shell脚本代码执行并将运行的截图附
于每个例子之后。
(2) 编写一个脚本,显示当前日期及工作目录,并列出有多少个用户在系统上
工作。
(3) 编写脚本接受用户的输入参数,如果用户所给参数个数为1个则将该参数
记录在文件record中,否则在屏幕上输出错误提示信息。
(4) 定义两个公共变量x,y并对其赋值。编写一个脚本,实现x,y的值交换,
在屏幕上输出x,y交换值前后的结果。
正在阅读:
实验4 SHELL脚本的编写(一)10-10
小升初数学衔接专项训练第14讲正比例和反比例应用题03-11
基于348构成体系的商业模式分类研究06-07
人教版三年级上册美术教案(全册)06-30
巴掌难求作文800字07-14
2000年6月豫价工字188号《关于降低供电贴费标准等问题的通知》03-11
霸王阴功超全霸王阴功 - 图文03-11
电话营销呼叫中心建议方案05-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 脚本
- 编写
- 实验
- SHELL
- 采光井脚手架专项方案
- 人教版七年级历史第一学期期末试卷
- 婚礼司仪主持流程
- 分批法实训0
- 中学学生一日常规
- 100KG四自由度码垛机器人底座设计及分析要点 - 图文
- 灰球铸铁铸件检验标准 完成版 - 图文
- 《三位数乘两位数》整理和复习导学案(谢海霞)
- 我国移动电子商务发展探析论文正文
- 车货运装卸传输带
- 职业生涯规划中心构想 - 图文
- 某住宅楼水暖施工方案
- 调压器的设计运行与维护管理
- 关于做好汉语教师赴新加坡任教推荐工作的通知 - 图文
- 潞灌乡明德中心小学一细五领月报(1)
- 最新2019版高考生物二轮复习 专题七 变异、育种与进化自查学案 - 图文
- 2017年上海春季高考英语试题 校对版
- 辽宁省大连市高中物理第六章万有引力与航天6.4万有引力理论的成就同步测试新人教版必修2
- 填空选择专练(8-12)(15-18)(理科)
- 2015年中考语文二轮专题复习试卷:专题42 现代文七(上)第三单元