文档视界 最新最全的文档下载
当前位置:文档视界 › 实验4 shell脚本的编写(一)

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

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

广东技术师范学院实验报告

学院:计算机科学学院专业:软件工程班级: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/sh

echo hello world !!

然后按如下方式执行程序并得出相应结果:

# chmod +x hello

#./hello

hello world !!

关于shell脚本创建和运行的几点说明:

(1)在bash中,每一个脚本的开头,必须有:#! /bin/sh

(2)必须将脚本文件设置为可执行,即

# chmod +x myprogram

或者,使用如下方式执行shell脚本:

# . myprogram

(3)如果shell脚本所放置的目录并不在当前所查找的路径中,可把这个目录名添加到查找路径中,那么就可以命令的形式执行该脚本。系统默认的查找路径可通过如下命令获得并修改:

# echo $PA TH

/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中有三种变量:

●环境变量:系统环境的一部分,通常不必去定义。个别如PA TH变量可以修改。

●内部变量:由系统提供,不可修改。

●用户变量:在编写shell脚本时所定义的,可在脚本内修改和使用。

环境变量是指UNIX为用户配置系统而提供的一些基本变量。环境变量有许多,但一般来说如下一些环境变量比较常用:PA TH(命令搜索路径)、ENV(启动脚本的路径名)、PS1(命令行提示符)、SHELL(当前系统使用的shell类型)、HOME(用户登录主目录)。用户可改动这些环境变量来实现定制系统环境的目的,最常见的有改动命令行提示符,以下是一个相关例子,同学们可在Linux系统下做这个实验。

#PS1=?$LOGNAME@$myhost $PWD \$ ?

内部变量是指shell的一些预定义变量,提供给用户在程序运行时做判断和使用。常用的内部变量有:$1-$9(脚本命令行参数)、$0(脚本名)、$#(命令行参数个数)、$?(上一个命令的返回值)、$*(所有命令行参数)、$$(脚本的进程号)等。请运行以下脚本例子,并将结果以截图形式附于例子后。

例子:内部变量$#、$0、$*,可对脚本改动,查看其他内部变量的值。

#!/bin/sh

#my test program

echo "number of parameters is "$#

echo "program name is "$0

echo "parameters as a single string is "$*

例子:内部变量的使用。注意在脚本运行时要分为两种情况:给定参数和不给定参数(为什么?)。

#!/bin/sh

#name display program

if [ $# -eq 0 ]

then

echo "name not provided"

else

echo "your name is "$1

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="test string"

newvar="value of var is $var"

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交换值前后的结果。

Linux实验项目四--shell编程

实验项目四shell编程 一、实验目的 (1)了解shell的作用和主要分类; (2)掌握bash的建立和执行方式; (3)掌握bash的基本语法; (4)学会编写shell脚本。 二、实验内容 (1)shell脚本的建立和执行; (2)历史命令和别名定义; (3)shell变量和位置参数、环境变量; (4)bash的特殊字符; (5)一般控制结构; (6)算术运算及bash函数。 三.实验软件 VMWare Workstation 5.0; Red hat linux 9.0; 四.实验主要步骤 1、利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。然后以不同方式执行脚本。 2、运行history命令,配置历史命令环境。 3、体会bash的命令补齐功能。 4、用alias定义别名,然后执行。 5、编辑如下脚本进行执行: 6、编写一个shell脚本,求斐波那契数列的前10项及总和。 7、设计一个程序cuts,它由标准输入读取数据,获取由第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)。例如: $cuts 11 14 tis is a test of cuts program (输入) tst(显示结果

五.实验结果 1、利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。然后以不同方式执行脚本。 2、运行history命令,配置历史命令环境。 3、体会bash的命令补齐功能。 双击tab键,能列出所有符合条件的结果,只有唯一结果时单击可补全。 4、用alias定义别 名,然后执行。 5、编辑如下脚本进行执行:

linux+shell脚本语言基础知识

linux shell脚本语言基础知识 一.shell简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的界面,更确切的说,shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用Shell脚本编程,完成更加复杂的操作。 shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。通常用Bash,也就是Bourne Again Shell进行编程。 二.shell使用 1.建立和运行shell程序 shell脚本程序:按照一定的语法结构把若干linux命令组织在一起,是这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写shell程序需要一个文本编辑器,如VI和VIM,通常使用VIM文本编辑器,支持更便利的插入模式。 首先使用VIM编辑器编辑一个hello.sh文件: #!/bin/bash #hello world example

Shell脚本编写基础

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。 一、什么是shell 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。 当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的https://www.docsj.com/doc/e35030349.html,所做的一样,所不同的是,在DOS中,https://www.docsj.com/doc/e35030349.html,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。 二、几种流行的shell 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型: #echo $SHELL $SHELL是一个环境变量,它记录用户所使用的shell类型。你可以用命令: #shell-name 来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个shell之后,称为下级的shell或子shell。使用命令: $exit 可以退出这个子shell。 使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍: 1.ash ash shell是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。 2.bash bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色: (1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 (2)自动通过查找匹配的方式给出以某字符串开头的命令。 (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 3.ksh ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。 4.csh

2017年实验室生物安全事故联合处置应急演练脚本(正式版))

2017年实验室高致病微生物应急处置演练脚本 13:00 15:00 人员进场 集中 各参演 和观摩 人员 13:00- 宣布演练15:00 开始各参演 和观摩 人员 第一部分演练就位 2楼微生 物实验室 2楼微生 物实验室 指挥:邱鸿 参演人员:检验科7人观 摩人员:检验科、感染科 n 【总指挥邱鸿】为进一步落实《黑龙江省卫 生计生委关于病原微生物实验室生物安全事件 应急处置预案的通知》精神,做好病原微生物 实验室生物安全防护工作,主动防范可能出现 的各类生物安全事故,在检验应急能力的同 时,也锻炼队伍和改进工作。今天在本微生物 实验室举行这次实验室生物安全事故处置应急 演练。 演练所有工作已准备就绪,我宣布:“实验室 生物安全事故应急处置演练”现在开始!

2017年实验室高致病微生物应急处置演练脚本实验室现 场的参演及观摩人员就位观摩人2楼微生 物实验室 参演实验室人员方人就位,要求穿戴一次 性防护服、口罩、一次性鞋套、一次性乳胶 手套、防护眼镜。 观摩人员按序到达演示实验间外廊,要求 穿戴白大衣、鞋套。 13:00 4 15: 00 事故发生 微检科 参演人 员 2楼微生 物实验室 一位实验人员不慎将 大肠埃希菌生化反应 板跌落地面,并形成 溅洒。 1名实验人员手持的装有大肠埃希菌的生 化反应板不慎跌落到地面,并造成其中的

2017年实验室高致病微生物应急处置演练脚本 13:00 5 15: 00 现场处置 检验科 参演人 员 2楼微生 物实验室 用消毒液对涉事人员 下肢、跌落反应板和溅 洒面进行喷洒,然后用 一件白大褂将反应板 和溅洒面覆盖,再行消 毒液喷洒。 溶液溅洒,形成了一个直径约30cm的污染 面,并造成工作人员下肢的可见污染。

实验室方案

实验室工作方案 一、指导思想: 根据科学课程的教学要求,各实验室应积极配合各年级科学教学活动,做好各课的实验室准备工作,以确保实验课的顺利进行。强化科学实验探究的教学过程,开拓我校教学特色,做到开足开齐实验课,确保每位学生都有动手操作机会,让小学生在真实的科学活动中提高科学素养。力争做到规范化、标准化、常规化,充分发挥教学仪器(材)应有的作用。 二、主要任务、目标: 1、加强硬件建设,积极向上级领导争取实验教学仪器,不断加强学校实验教学仪器的配备,争取达到新配备标准。 2、健全管理制度,加强管理措施,加大奖惩力度,各项规章制度落到实处,有效促进实验教师的工作积极性。 3、通过各项实验教学活动的开展,发展一批优秀的实验教师,对他们进行再培训,使之成为此项工作的带头人,优化实验教师队伍建设。 4、创新开展本块工作,力争工作中不存在盲点,不断强加教师队伍建设,提高我校实验教学质量。 三、具体工作措施: 1、实验室工作由校长直接管理,实验室设专门管理员,具体管理实验室工作。 2、实验室管理员任务和目标: (1)、实验员必须拟定教学计划,各年级教学工作须按计划进行实验教学,实验教学需填写实验通知单、演示实验登记表、分组实验登记表、分组实验报告单等表格。 (2)、在进行实验教学前,必须准备好实验所需要的仪器和材料,教师对每组实验有充分准备,精心设计实验步骤和实验过程、方法,以保证实验的科学性,安全性。 (3)、在引导学生进行分组实验时,应要求学生准备好相关的实验材料,以确保学生在实验中有物可做,并指导学生观察、讨论,得出相应的结论,完成实验教

学。 (4)、指导学生进行分组实验后,应指导学生完成实验报告单,并认真审阅,引导学生在实验、观察中养成科学的自然观和相应的实验能力。 (5)、每学期按时将各类材料分类装订后归档,并按时填写相应实验开出数、开出率,完成实验室材料的归档管理,做到科学、规范,便于查阅。 3、仪器室的器材管理: 实验室管理人员除应管理好材料收发、入档工作外,还应管理好实验室的器材及日常工作。 (1)、材料(实验器材)的每日发放和收回工作,并作好相应发放,收回记录及损坏、修理等相应记录; (2)、作好相关实验器材的申报,采购,申购等工作; (3)、每周组织学生打扫实验室,并处理好实验室,仪器室的用电,设备,器具的保管、管理、安全工作,以防意外事故发生。

利用shell脚本做可执行安装程序

利用shell脚本制作可执行安装程序 制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin、run等安装脚本的简单制作了。 如在linux 下制作二进制 .bin 文件的制做方法:就是使用cat 命令将执行脚本和打包文件同时放到一个.bin的文件里。这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便。 下例就是一名为install.sh脚本,它实现以下功能: ●自动创建用户及用户组 ●自动检查网络环境并安装环境包所需要的支撑环境 ●显示安装进度 ●自动检查并配置防火墙 ●自动安装环境包 ●自动增加自启动脚本 1.bin文件制作步骤 a)打包文件 tar cvf myapp-env-1.0-linux-x64-installer.tar.gz myapp-env-1.0-linux-x64-installer.tar b)编写脚本 内容见《install.sh脚本内容》节 c)可执行安装程序制作方法 # cat install.sh myapp-env-1.0-linux-x64-installer.tar.gz > myapp-env-1.0-linux-x64-installer.bin 这样就生成myapp-env-1.0-linux-x64-installer.bin的安装文件,该文件是由shell脚本和二进制合成的。前半部分是脚本后半部分是二进制文件,用strings等二进制查看命令可以看到。 2.安装 chmod 755 myapp-env-1.0-linux-x64-installer.bin ./ myapp-env-1.0-linux-x64-installer.bin 3.install.sh脚本内容

2017年实验室生物安全事故联合处置应急演练脚本

. .. . s 2017年实验室高致病微生物应急处置演练脚本 第一部分 演练就位 1 13:00-15:00 人员进场集中 各参演和观摩 人员 2楼微生 物实验室 指挥:邱鸿 参演人员:检验科7人 观摩人员:检验科、感染科 2 13:00-15:00 宣布演练 开始 各参演和观摩人员 2楼微生 物实验室 【总指挥邱鸿】为进一步落实《黑龙江省 卫生计生委关于病原微生物实验室生物安 全事件应急处置预案的通知》精神,做好 病原微生物实验室生物安全防护工作,主 动防范可能出现的各类生物安全事故,在 检验应急能力的同时,也锻炼队伍和改进 工作。今天在本微生物实验室举行这次实 验室生物安全事故处置应急演练。 演练所有工作已准备就绪,我宣布:“实验 室生物安全事故应急处置演练”现在开始!

. .. . s 2017年实验室高致病微生物应急处置演练脚本 3 实验室现场的参演及观摩人员就位 观摩人员 2楼微生物实验室 参演实验室人员方人就位,要求穿戴一次 性防护服、口罩、一次性鞋套、一次性乳 胶手套、防护眼镜。 观摩人员按序到达演示实验间外廊,要求 穿戴白大衣、鞋套。 4 13:00-15:00 事故发生 微检科参演人 员 2楼微生物实验室 一位实验人员不慎 将大肠埃希菌生化 反应板跌落地面,并 形成溅洒。 1名实验人员手持的装有大肠埃希菌的生 化反应板不慎跌落到地面,并造成其中的 溶液溅洒,形成了一个直径约30cm 的污染 面,并造成工作人员下肢的可见污染。

. .. . s 2017年实验室高致病微生物应急处置演练脚本 5 13:00-15:00 现场处置 检验科 参演人 员 2楼微生物实验室 用消毒液对涉事人 员下肢、跌落反应板 和溅洒面进行喷洒, 然后用一件白大褂 将反应板和溅洒面 覆盖,再行消毒液喷 洒。 事故发生后,不要收捡跌落物。实验室人 员立即用有效氯含量0.5%~1.0%的含氯消 毒液,对涉事人员下肢、跌落反应板和溅 洒面进行饱和喷洒;溅洒面的喷洒是由溅 洒中心点直径约100cm 的范围,手法是由 外向里饱和喷洒。然后,就近取一白大褂 将反应板和溅洒面完全覆盖,再往其上饱

经典shell-脚本实例

Linux shell 脚本实例 1. 写一个脚本,利用循环计算10的阶乘#!/bin/sh factorial=1 for a in `seq 1 10` do factorial=`expr $factorial \* $a` done echo "10! = $factorial" 2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。 #!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done ////////////////////////////////////////// #!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done 3. 写一个脚本,利用循环和continue关键字,计算100以内能被3整除的数之和 4.一个函数,利用shift计算所有参数乘积,假设参数均为整数 #! /bin/sh result=1 while [ $# -gt 0 ] do result=`expr $result * $1` shift done echo $result 5.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。#!/bin/shcase ${1##*.tar.} in bz2) tar jxvf $1 ;; gz) tar zxvf $1 ;; *) echo "wrong file type"esac6.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。

shell脚本练习题

shell脚本例子集锦(习题总结) 练习一:写一个脚本 1.设定变量FILE的值为/etc/passwd 2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么 形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`) Hello,root,your UID is 0. 3.统计一个有多少个用户 答案一:#!/bin/bash file="/etc/passwd" LINES=`wc -l $file | cut -d" " -f1` for I in `seq 1 $LINES`;do userid=`head -$I $file | tail -1 |cut -d: -f3` username=`head -$I $file | tail -1 |cut -d: -f1` echo "hello $username,your UID is $userid" done echo "there are $LINES users" 答案二:#!/bin/bash file=/etc/passwd let num=0 for I in `cat $file`;do username=`echo "$I" | cut -d: -f1` userid=`echo "$I" | cut -d: -f3` echo "Hello,$username,your UID is $userid" num=$[$num+1] done echo "there are $num users" 练习二:写一个脚本 1.切换工作目录至/var 2.依次向/var目录中的每个文件或子目录问好,形如: (提示:for FILE in /var/*;或for FILE in `ls /var`;) Hello,log 3.统计/var目录下共有多个文件,并显示出来 答案:#!/bin/bash cd /var let num=0 for I in `ls /var/*`;do echo "hello $I" num=$[$num+1] done echo "the number of files is $num" 练习三:写一个脚本 1.设定变量file的值为/etc/passwd

自己动手DIY蛋糕辅助脚本(按键精灵)

在7.8号没修复之前无限清洁和制作的严重BUG从而导致很多会电脑的都猛升到30级以上,而我是9号玩的,我表示很伤心,同时很嫉妒他们。 抱怨不说了,进入正题(会电脑的达人勿喷,我是新手,请更好的请发帖让版主置顶) ①相信玩游戏的都懂按键精灵这个软件(再次鄙视下7.8号之前的孩纸利用这个一边睡觉一边猛的跨级) 先发下载地址:https://www.docsj.com/doc/e35030349.html,/qm8chs.exe(怕有病毒的直接百度吧) 下载安装后会有个网页按键精灵(可以自己琢磨下,操作很简单) 然后再点击开始录制再输入网址

之后的操作基本都明白,就是个录制回放的脚本程序,自己琢磨不多说了,(我是周末录制12个小时,然后白天10点按下,晚上10点一下自动操作就睡觉)最后录制完成再保存 脚本做成功了,然后打开按键精灵按F10就开始示范工作了。 很简单的脚本制作程序,有些孩纸觉的现在的500点清洁和制作刷的累,也可以用按键精灵制作个脚本来刷。 ②软件2:用处不大,对那些装修完或者突然没钱又或者柜台不够的同学有帮助,就是可以快速卖蛋糕的软件,让你的服务员不再偷懒。(不急钱的同学表示无鸭梨诶) 玩过传奇SF的都知道变速齿轮的强大,让你当前的程序可以随意变速(我就不发下载地址了,自己百度吧,网上的那种都是带广告网页的比较烦,但绝对没毒)

打开变速齿轮,双击CAKE的程序 然后想怎么加速就怎么加速 另外好像IE8不能用这,IE7可以用的,自己试下。 就说这么多了,以后再分享技术,只试用新手。希望会软件的达人快点出简单的辅助。。。PS:此软件只适用卖蛋糕加速,不适用蛋糕制作加速

实验十三 shell脚本练习

上机实验内容: 1、请编写一个脚本,其功能是将当前用户的根目录下的work目录打包为名为“user’s-workdir-in-YYMMDD”的tar包(提示:参考用date建立文件) 要求:i)若该目录不存在,显示“dir not exist” ii)若该文件不是目录类型,显示“work is a type”,此处的type为文件类型 #!/bin/bash [ -e /work ] && tar -cvf "User's-workdir-in-`date +%Y%m%d`.tar" /work || echo "dir not exist" declare filetype="" [ -f /work ] && filetype="常规文件" [ -d /work ] && filetype="目录文件" [ -b /work ] && filetype="块设备文件" [ -c /work ] && filetype="字符设备" [ -S /work ] && filetype="套接字文件" [ -p /work ] && filetype="FIFO(管道)文件" [ -L /work ] && filetype="连接文件" [ "$filetype" != "" ] && echo "work is a $filetype" 2、编写一个脚本,其中包含一个打印函数,用于将多次输入的字符组合为一个字符串 要求:i)使用函数实现新值的输出 ii)使用循环语句完成多个字符的输入,直到输入字符串EOF才完成字符串的累加#!/bin/bash function add(){ str="$str"$input echo $str } read -p "请输入一个字符串或者输入EOF结束本次操作:" input declare str while [ "$input" != "EOF" ] do add read -p "请输入一个字符串或者输入EOF结束本次操作" input done 3、自我练习:设计一个运算器,实现“加、减、乘、除”功能。 (四则运算:符号使用+、-、*、/) #!/bin/bash

Shell脚本编程详解-吐血共享

第12章 Shell 脚本编程 ● Shell 命令行的运行 ● 编写、修改权限和执行Shell 程序的步骤 ● 在Shell 程序中使用参数和变量 ● 表达式比较、循环结构语句和条件结构语句 ● 在Shell 程序中使用函数和调用其他Shell 程序 12-1 Shell 命令行书写规则 ◆ Shell 命令行的书写规则 对Shell 命令行基本功能的理解有助于编写更好的Shell 程序,在执行Shell 命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如: [root@localhost root]# ls a* -l;free;df 长Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如: [root@localhost root]# echo “ this is \ >long command ” This is long command 注意: “>”符号是自动产生的,而不是输入的。 12-2 编写/修改权限及执行Shell 程序的步骤 ◆ 编写Shell 程序 ◆ 执行Shell 程序 Shell 程序有很多类似C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。Shell 程序是指放在一个文件中的一系列Linux 命令和实用程序。在执行的时候,通过Linux 操作系统一个接一个地解释和执行每条命令。首先,来编写第一个Shell 程序,从中学习Shell 程序的编写、修改权限、执行过程。

12-2-1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。 [root@localhost bin]#vi date #! /bin/sh echo “Mr.$USER,Today is:” echo &date “+%B%d%A” echo “Wish you a lucky day !” 注意: #! /bin/sh通知采用Bash解释。如果在echo语句中执行Shell命令date,则需要在date 命令前加符号“&”,其中%B%d%A为输入格式控制符。 12-2-2 建立可执行程序 编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令。[root@localhost bin]#chmod +x date 12-2-3 执行Shell程序 执行Shell程序有下面三种方法: 方法一: [root@localhost bin]#./ date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法二: 另一种执行date的方法就是把它作为一个参数传递给Shell命令: [root@localhost bin]# Bash date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法三: 为了在任何目录都可以编译和执行Shell所编写的程序,即把/bin的这个目录添加到整个环境变量中。 具体操作如下: [root@localhost root]#export PATH=/bin:$PATH [root@localhost bin]# date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day !

shell脚本之前的基础知识

第十二章学习shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员。目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目。有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富。笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多。笔者在这一章中并不会多么详细的介绍shell脚本,而只是带你进入shell脚本的世界,如果你很感兴趣那么请到网上下载相关的资料或者到书店购买相关书籍吧。 在学习shell 脚本之前,需要你了解很多关于shell的知识,这些知识是编写shell脚本的基础,所以希望你能够熟练的掌握。 【什么是shell】 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。 笔者接触的linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。那么这个bash有什么特点呢? 1)记录命令历史 我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中。有一点需要你知道的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。 与命令历史有关的有一个有意思的字符那就是”!”了。常用的有这么几个应用:(1)!! (连续两个”!”),表示执行上一条指令;(2)!n(这里的n是数字),表示执行命令历史中第n条指令,例如”!100”表示执行命令历史中第100个命令;(3)!字符串(字符串大于等于1),例如!ta,表示执行命令历史中最近一次以ta为开头的指令。

实验室实施方案

实验室实施方案 一、基本情况 我校实验室软、硬件建设水平在全县乡镇初中是首屈一指的,学校的固定资产也主要集中在这里,这是一笔重要的教育资源,充分发挥这笔教育资源是全面推进学校素质教育水平,是培养学生创新精神和实践能力的重要阵地,是提高教育教学质量的重要途径。 我校只有一名实验室管理员,三名化学教师,六名物理教师,四名生物教师,没有专职实验教师,实验教学工作全部由任课教师承担,既承担上课又承担实验教学工作的双重任务,他们从大局出发,克服困难,以求真务实、扎实的工作态度和工作作风,赢得了学校领导和师生的一致好评。 学校积极争取县站领导来我校指导工作,认真落实县站的各项工作任务,学校实验室工作小组积极带领实验教师,通过规范管理行为,强化服务意识,加强过程管理,狠抓措施落实,较好地将我校的资源优势转化成教育优势。 二、工作思路 我校实验室工作的基本目标是:保障有力,管理到位,服务到位,利用率高,效果好。围绕实验室工作的基本目标,学校实验室工作坚持了“管、教、研”三位一体的工作思路。 积极与县站作好协调,加大对实验教师的管理力度,狠抓实验教师队伍素质的培训和提高工作,真正把每一位实验教师培养为素质优良、作风过硬的管理行家,教师学生的得力助手。 逐步建立实验教师工作实绩考核办法,通过规范管理,体现工作目标完成质量评价实验教师的工作实绩,将重结果转变为重过程,向工作过程要质量,确保实验教学的顺利进行。实验教师根据各自的工作岗位和各年级的实验教学的实际情况,积极与任课教师加强联系,通过突出使用,提高利用率,把实验教学工作有机地融合到教学工作中,提高实验教学质量。各实验教师从学期初的拟订实验教学计划到实验准备,实验改进,实验指导等方面积极认真听取任课教师和学生的意见,努力提高工作水平和服务质量,以使用为突破口改进和活化实验教学,教学生会动手、会观察、会操作,培养学生的实验能力。 加强实验教学的研究工作,是摆在实验教师面前的一项非常重要的任务,学校专门成立了由张然功为组长的实验教学研究小组,每周三晚上进行教研活动,加强实验教学的研究工作。 三、实验室工作的措施 ㈠加强对实验室工作的领导 提高实验教学质量,领导是主导,任课教师、实验教师是关键。学校实验室工作领导小组定期召开会议,认真学习和贯彻上级各部门的有关精神,狠抓落实工作,强化过程管理,定期检查实验室工作,及时解决实验室工作中存在的实际问题。由于学校领导和教师们的共

linux Shell(脚本)编程入门 实例讲解详解

linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash 的大姐,bourne shell中运行)。 如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写我们的shell程序。程序必须以下面的行开始(必须方在文件的第一行): 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行: 然后,您可以通过输入: ./filename 来执行您的脚本。 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 变量 在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:

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

广东技术师范学院实验报告 学院:计科院专业:班级:成绩: 姓名:学号:组别:组员: 实验地点:实验日期:指导教师签名: 实验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程序编写,

脚本

高中物理教学课件《力的合成与分解》 作者:广西大学附中王文熊、覃静《一》力的合成 一、法则 矢量的合成遵守平行四边形法则 船在静水中沿OA方向匀速航行,水流沿OB方向流,结果在流水中船实际沿OC方向运动。如果我们按比例作出矢量图,OC恰好就是以OA、OB为邻边的平行四边形的对角线。 从大量类似的事例(包括速度、加速度、力、位移……等等),都可以得到这样的结果,这就是矢量合成的平行四边形法则。可见平行四边形法则是从大量事实中总结出来的。 力的合成 1、力是矢量,因此,力的合成也同样遵守平行四边形法则: 用代表两个分力的线段作邻边,做一个平行四边形,它的对角线就代表了合力的大小和方向。 2、表示两个力合成的平行四边形,连对角线共有5条线段。仔细看看,这5条线段都是必不可少的吗?请看其中用来表示力的线段有多少条?如果把两条辅助线(虚线)去掉,再把 F2 移到右边,咦!这下子成了什麽图形?

可见只画一个三角形就可以求出合力--这就是“三角形法” 3、如果要求三个力的合力又该怎麽办?先用平行四边形法则看看其实用三角形法更简便:先画出F1和F2及其合力,再接着画F3并画出合力。 可是这已经不是三角形了,是个多边形。这就是“多边形法”。 小结一下:求多个力的合力可以先画出第一个力的图示,接着在第一个力的末端再画第二个力,在第二个力的末端再画第三个力……,最后从起点O到最后一个力的末端画一条有向线段就是所求的合力。 用多边形法求多个力的合力,是不是比直接用平行四边形简便? 二、想一想: 1、两个力的合力一定比这两个力大吗? 点击这里,动手试一试 你的结论是什麽?

看答案 2、已知两个分力求合力,试试看改变这两个分力之间的夹角,什麽情况下合力最大?什麽情况下合力最小? 点击这里,动手试一试 你的结论是什麽? 看答案 三、例题 四、练习 《二》力的分解 一、法则 “力的分解”是“力的合成”的逆运算 力的合成是:已知两个分力求它们的合力,画力的图示时,就是已经有了平行四边形的两条邻边,要画出它的对角线。 力的分解则刚好相反:已知合力求它的两个分力,就是已知平行四边形的对角线,要求作这个平行四边形--画出它的两个邻边。 已知合力,求它的两个分力 我们用平行四边形法则试试看。

Shell编程基础教程

1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。要使脚本可执行: chmod +x filename 这样才能用./filename 来运行 1.1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 1.1.3 变量 在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量: num=2 echo "this is the ${num}nd"

这将打印: this is the 2nd 1.1.4 环境变量 由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。 1.1.5 Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: s虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。 常用命令语法及功能: echo "some text": 将文字内容打印在屏幕上 ls: 文件列表 wc –l filewc -w filewc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数 cp sourcefile destfile: 文件拷贝 mv oldname newname : 重命名文件或移动文件 rm file: 删除文件 grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt cut -b colnum file: 指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆,这是两个完全不同的命令 cat file.txt: 输出文件内容到标准输出设备(屏幕)上 file somefile: 得到文件类型 read var: 提示用户输入,并将输入赋值给变量 sort file.txt: 对file.txt文件中的行进行排序 uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3 find: 搜索文件比如:根据文件名搜索find . -name filename -print tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux

Shell编程基础.pdf

为什么要进行shell编程 Linux系统中虽然有各种各样的图形界面工具,但shell仍然是一个非常灵活的工具。Shell不仅集合了大量命令,还是一门非常棒的编程语言。借助shell,大量任务能实现自动化;shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建立一个脚本 Linux中有许多种不同的shell,通常我们使用bash (bourne again shell) 进行shell编程因为bash不仅免费(自由)且易于使用。本文提供的脚本都用bash(当然大多数情况下,这些脚本同样可以在bash的前辈, bourne shell中运行)执行。 如同其他语言一样,我们可以使用任意一种文字编辑器,比如nedit、kedit、emacs、vi 等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): 代码: #!/bin/bash 符号#!用来告诉系统执行该脚本的程序,本例使用/bin/sh。编辑完了,如果要执行该脚本,还必须使其可执行: 代码: chmod +x filename 这样输入 ./filename 便可执行该脚本。 注释 shell脚本中以# 开始的行表示注释,直到一行的结束。我们真诚的建议你在脚本中使用注释,这样即便在相当长时间内没有使用该脚本,你也能在短时间内明白该脚本的作用和工作原理;此外还有很重要的原因——有了注释,更利于和别人分享你的脚本。 变量 在其它编程语言中,你必须使用变量。shell编程中,所有变量都由字符串组成,并且不需要声明。要给一个变量赋值,你可以这么写: 代码: 变量名=值

相关文档