shell脚本编程实验手册

合集下载

linux的shell脚本实验报告

linux的shell脚本实验报告

第二次实验内容一、实验名称:Linux下shell编程二、实验类型:设计三、实验目的:1.熟悉Linux的shell几种变量使用2.熟练掌握Linux的shell编程几种结构3.熟练掌握Linux下shell脚本的编写四、实验准备参考教材,课件第7章内容及笔记。

要求实验内容全部写到实验报告上(B5纸)。

五、实验内容1. 练习使用shell四种变量,参考课件例题。

用户自定义变量,环境变量,位置变量,特殊变量这四种变量类型的使用,书中有例题。

2. 调试课件所有shell脚本的例题。

3. 编写如下脚本:●编写脚本if1,测试其功能。

echo -n "word 1: "read word1echo -n "word 2: "read word2if test "$word1" = "$word2"thenecho "Match"fiecho "End of program."●编写脚本chkargs,测试其功能if test $# -eq 0thenecho "You must supply at least one argument."exit 1fiecho "Program running."●编写脚本if2,测试其功能if test $# -eq 0thenecho "You must supply at least one argument."exit 1fiif test -f "$1"thenecho "$1 is a regular file in the working directory"elseecho "$1 is NOT a regular file in the working directory"fi●编写脚本if3,测试其功能echo -n "word 1: "read word1echo -n "word 2: "read word2echo -n "word 3: "read word3if [ "$word1" = "$word2" -a "$word2" = "$word3" ]thenecho "Match: words 1, 2, & 3"elif [ "$word1" = "$word2" ]thenecho "Match: words 1 & 2"elif [ "$word1" = "$word3" ]thenecho "Match: words 1 & 3"elif [ "$word2" = "$word3" ]thenecho "Match: words 2 & 3"elseecho "No match"fi●编写smartzip 脚本,测试其功能#!/bin/bashftype=`file "$1"`case "$ftype" in"$1: Zip archive"*)unzip "$1" ;;"$1: gzip compressed"*)gunzip "$1" ;;"$1: bzip2 compressed"*)bunzip2 "$1" ;;*) echo "File $1 can not be uncompressed with smartzip";;esac●编写脚本dirfiles,测试其功能。

实验指导书--实验03 Linux Shell编程

实验指导书--实验03 Linux Shell编程

实验三: Linux Shell编程
实验学时: 2
实验类型: 设计
实验要求: 必修
一、实验目的
通过本实验的学习, 使学生掌握Shell编程的基本方法。

二、实验内容
实验内容: Linux Shell实现题目所要求的功能。

三、实验原理、方法和手段

四、实验组织运行要求
以学生自主训练为主的开放模式组织教学
五、实验条件
PC机
六、实验步骤
1.编写一个Shell脚本, 完成以下功能:
1)显示文字“Waiting for a while….”
Vi helloworld
#!/bin/bash
Echo “Waiting for a while….”
2)显示当前目录下面扩展名为”.h”的文件和目录, 并输出重定向到/home/file.txt文件
Find .h
Find .h >>/home/file.txt
提示: 显示文字可使用echo命令, 搜索文件可使用find命令
2.编写一个Shell脚本, 完成以下功能
计算8以内(含8)不是3的整数倍的数字的和
3.编写一个Shell脚本, 在当前目录创建5个目录, 目录的命名形式分别为: dir-1, dir-2, …., dir-5
七、思考题
比较C语言和Shell编程的一些异同点。

八、实验报告
实验预习: 学习shell编程的基本方法
实验记录: 记录解决问题所用的代码和运行结果
实验报告: 提交代码和运行结果
九、其它说明。

实验七 shell编程实验

实验七 shell编程实验

实验七 LINUX-Shell编程一.实验名称:Shell 简单编程实验和较复杂的考勤模拟shell程序设计二.实验目的:理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。

三.实验内容:考勤模拟Shell程序设计用shell设计一个模拟考勤程序,实现如下功能选择界面:1:上班签到2:下班签出3:缺勤信息查阅考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。

如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。

如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。

如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。

用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。

四.实验要求:1、掌握Shell程序的编辑、运行、调试方法2、完成实验内容要求的功能五.简单SHELL实验:请在vi中逐一编辑并执行以下6个shell脚本程序1.编写一个简单的回显用户名的shell程序。

#vi dat#!/bin/bash#filename:datecho "Mr.$USER,Today is:"echo `date`echo Wish you a lucky day!#chmod +x dat#./dat2.使用if-then语句创建简单的shell程序。

#vi bbbb#!/bin/bash#filename:bbbbecho -n "Do you want to continue: Y or N"read ANSWERif [ $ANSWER=N -o $ANSWER=n ]thenexitfi#chmod +x bbbb#./bbbb3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。

实验三 shell编程

实验三 shell编程

实验三 shell编程一、实验名称:shell编程二、实验学时:2学时三、实验目的掌握shell脚本的多种常用的执行方式;熟悉shell编程常用语法格式和变量的使用方法;掌握shell编程中常用的循环语句、分支语句、条件语句的使用方法。

四、实验步骤1.利用gedit编辑器,在当前用户的家目录下建立一个简单的脚本文件file.sh,其中包括date,cal,pwd,ls 等常用命令,然后以不同方式执行该脚本。

(1)采用输入定向到shell脚本的方法执行:输入命令 bash<file.sh(2)不给shell脚本文件可执行权限a)source FileName作用:在当前bash环境下读取并执行FileName中的命令。

该filename文件可以无"执行权限"注:该命令通常用命令“.”来替代。

如:source bash_profile . bash_profile两者等效。

source(或点)命令通常用于重新执行刚修改的初始化文档。

source命令(从 C Shell 而来)是bash shell的内置命令。

点命令(点符号),从Bourne Shell而来,就是顺序的执行文件里的命令而已。

b)sh和bash命令用法: shFileName bash FileName作用:在当前相应的bash环境下新建一个子shell读取并执行FileName中的命令。

该filename文件可以无"执行权限" 。

注:两者在执行文件时的不同,是分别用自己的shell来跑文件。

sh使用“-n”选项进行shell脚本的语法检查,使用“-x”选项实现shell脚本逐条语句的跟踪,可以巧妙地利用shell的内置变量增强“-x”选项的输出信息等。

(3)修改shell脚本的权限为可执行(chmod +x file.sh)a)./的命令用法:./FileName作用:打开一个子shell来读取并执行FileName中命令。

操作系统实验四:Shell的实现

操作系统实验四:Shell的实现

操作系统实验四:Shell的实现⼀、实验内容H1实现具有管道、重定向功能的shell能够执⾏⼀些简单的基本命令,如进程执⾏、列⽬录等。

⼆、实验⽬的H11.学习并理解linux中shell的知识;2.重点学会编程实现管道和重定向的功能;3.实现⾃⼰的shell三、设计思路和流程图H11.对输⼊的命令进⾏解析H2实验内容主要是管道和重定向,这两个功能涉及shell“|”和“<”以及“>”等不同符号,所以要对输⼊的命令进⾏解析。

初步按照空格来分,之后再按照<、>、|这些涉及管道和重定向的符号来分。

2.简单命令的执⾏H2使⽤函数execvp可以实现简单的命令,这些命令暂时不涉及管道和重定向,函数原型为int execvp(const char *file ,char * const argv []);,execvp()会从PATH 环境变量所指的⽬录中查找符合参数file 的⽂件名,找到后便执⾏该⽂件,然后将第⼆个参数argv传给该欲执⾏的⽂件。

为了不造成阻塞,这⾥启⽤了⼀个新线程实现它,最后⽗进程需等待⼦进程,以回收分配给它的资源。

下⾯有些地⽅也⽤到这种⽅法。

3.输⼊输出重定向的实现H2实现重定向的主要函数是freopen,FILE *freopen( const char *path, const char *mode, FILE *stream );path: ⽂件名,⽤于存储输⼊输出的⾃定义⽂件名。

mode: ⽂件打开的模式。

和fopen中的模式(如r-只读, w-写)相同。

stream: ⼀个⽂件,通常使⽤标准流⽂件。

函数实现重定向,把预定义的标准流⽂件定向到由path指定的⽂件中。

要注意的是第⼆个参数,刚开始我是⽤的a+,结果每次输出都加到⽂件末尾。

后来查了⼀下,改成w+可以先清空再写⼊⽂件。

4.管道功能的实现H2命令之间通过|符号来分隔,使⽤pipe函数来建⽴管道。

Shell编程实验指导

Shell编程实验指导

Shell编程实验一、实验目的了解 Shell 的作用和主要分类。

了解 Bash的一般语法规则。

练习编写简单的shell程序。

二、实验内容1.Shell变量的定义及其使用。

2.位置参数和环境变量。

3.Shell中的特殊字符。

4.条件判断结构与循环结构5.函数的定义和使用三、预备知识1、LINUX环境下常用命令和VI编辑器的操作。

2、了解Shell作用和主要分类等基础知识。

四、实验设备及工具软件:PC机操作系统REDHAT ELAS4环境五、实验原理及说明Shell是Linux系统中一个重要的层次,它是用户与系统交互作用的界面。

在介绍Linux命令时,Shell都作为命令解释程序出现:它接收用户打入的命令,进行分析,创建子进程实现命令所规定的功能,等子进程终止工作后,发出提示符。

这是Shell最常见的使用方式。

Shell 除了作为命令解释程序以外,还是一种高级程序设计语言,它有变量,关键字,有各种控制语句,如if, case, while, for 等语句,有自己的语法结构。

利用Shell程序设计语言可以编写出功能很强、但代码简单的程序,特别是它把相关的Linux命令有机地组合在一起,可大大提高编程的效率,充分利用Linux系统的开放性能,设计出适合自己要求的命令。

六、实验步骤1.语法练习(1)Shell变量Shell有两种变量:环境变量和临时变量。

在Shell脚本中临时变量又分为两类:用户定义的变量和位置参数。

用户定义的变量用户定义的变量是最普遍的Shell变量,变量名是以字母或下化线打头的字母、数字和下线符序列,并且大小写字母意义不同。

变量名的长度不受限制。

定义变量并赋值的一般形式是:变量名=字符串例如,MYFILE=/usr/meng/ff/m1.ca.定义并显示变量的值在程序中使用变量的值时,要在变量名前面加上一个符号“$”。

这个符号告诉Shell,要读取该变量的值。

作为交互式输入手段,可以利用read命令由标准输入(即键盘)上读取数据,然后赋给指定的变量。

linux实验五、Shell脚本程序编制实验

linux实验五、Shell脚本程序编制实验

实验五Shell脚本程序编制实验●编写一个Shell命令脚本程序的基本步骤如下:●(1)编辑包含用户命令脚本程序的文本文件●(2)添加Shell定义语句,使Linux操作系统可以知道用户使用哪一种Shell●(3)编写Shell命令脚本程序内容●(4)保存脚本程序并退出。

用“chmod +x ”命令改变该脚本程序的存取权限和执行权限,使其可以被适当的用户使用。

●(5)运用该命令脚本程序以进行测试●(6)如有必要,可进行程序纠错。

●(7)如有必要,可把完整的命令脚本程序移动到相应位置●(8)如有必要,可在path语句中加上此脚本的路径练习:编写书本P107welcome Shell脚本程序运行脚本程序的三种方法:a.bash 脚本文件名b.bash < 脚本文件名c.chmod u(或g,o,a)+x 脚本文件名#为脚本添加执行权限Shell定义的环境变量shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的shell环境变量有:●HOME:用于保存注册目录的完全路径名。

●PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。

●TERM:终端的类型。

●UID:当前用户的标识符,取值是由数字构成的字符串。

●PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。

●PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。

●PS2:在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时shell判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。

练习:使用echo显示上述环境变量内容注意:PS1 提示符设定标记:●\d 日期●\H 完整主机名\h 主机名第一段●\t 24小时时间\T 12小时时间●\u 用户名●\V Bash版本信息●\w 完整的工作路径\W 最后一层目录名●\# 下达的第几个命令●\\$ 提示符(root $,普通用户#)练习:输入以下命令,思考设置PS1环境变量的作用PS1=‟\u-\w(\#)\\$‟PS1=[\u@\h \W]\\$定义变量格式:变量名=变量值引用变量$变量名只读变量readonly 变量名export命令对已定义的变量进行输出,使变量可被子shell使用位置参数位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。

实验十 Shell编程实验

实验十 Shell编程实验

实验10 Shell编程实验
1 实验目的
通过实验了解shell编程。

2 实验环境
VMware中已经安装好CentOS5.5版本。

3 实验原理
参见课件。

4 实验任务
完成shell简单程序设计。

5 实验步骤
1、编写一个shell脚本要求如下:
(1)脚本名字:autobak.sh
(2)脚本功能:实现目录和文件的备份,需要备份的目录(文件)由位置参数指出。

(3)备份后的文件存放在/backup目录下,备份文件名:原目录(文件).日期.bak
(4)备份成功与否都在/backup目录下生成一个日志文件记录,文件名:原目录(文件).日期.bak
2、编写一个shell脚本,要求如下:
(1)文件名:adduser.sh
(2)脚本功能:用循环为系统添加多个用户,添加的用户数量和用户名规则都由read 命令获得。

(3)用echo $passwd |/usr/bin/passwd –stdin $username可以为用户$username添加密码$passwd(非交互过程)。

3、设计一个shell程序计算n的阶乘。

要求:
(1)从命令行接收参数n。

(2)在程序开始后立即判断n的合法性,即是否有参数。

若有,是否为正整数?若非法,请给出错误提示。

(3)最后出计算的结果。

6 实验总结
略。

实验三 Shell脚本编程实验

实验三  Shell脚本编程实验

实验三 Shell脚本编程实验一、实验目的1.掌握Shell编程的基本方法2.了解Shell脚本的基础知识二、实验要求1.完成一个简单Shell程序的编写和执行过程;2.设计一个Shell程序,显示欢迎界面;3.使用until语句创建一个输入exit退出的Shell程序。

三、实验准备Shell是一个命令语言解释器,它拥有自己内建的Shell命令集,Shell也能被系统中其他应用程序调用。

用户在提示符下输入的命令都由Shell解释后传给Linux核心。

Shell的另一个重要特性是它自身就是一个解释型的程序设计语言。

Shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。

Shell 编程语言简单易学,任何在提示符中能键入的命令都能放到一个执行的Shell程序中。

Shell脚本的建立和执行Shell程序可以存放在文件中,这种被Shell解释执行的命令文件称为Shell脚本(Shellscript),也称做Shell文件或者Shell过程。

Shell脚本可以包含任意从键盘输入的UNIX命令。

1)·.Shell脚本的建立建立Shell脚本的方法同建立普通文本文件的方法相同,利用编辑器(如vi)进行程序录入和编辑加工。

例如,要建立一个名为ex1的Shell的脚本,可以在提示符后打入命令:$ vi ex12). 执行Shell脚本的方式执行Shell脚本的方式基本上有三种:(1)输入定向到Shell这种方式是用输入重定向方式让Shell从给定文件中读入命令行并进行相应处理。

其一般形式是:$ sh < 脚本名例如,$ sh < ex1(2)以脚本名作为Shell参数。

其一般形式是:$ sh 脚本名[参数] 例如,$ sh ex2 /usr/mengqc/usr/liuzhy(3)将Shell脚本改为有执行权限的文件,由正文编辑器(如vi)建立的Shell脚本,用户通常是不能直接执行的,需要利用命令chmod将它改为有执行权限。

Linux操作系统实验指导书-7shell

Linux操作系统实验指导书-7shell

《Linux操作系统》实验指导书
实验七
实验题目:shell编程
实验目的:熟悉并掌握shell程序设计基本语法;熟悉并掌握shell程序设计中的各种控制结构(if、case、for、while和until语句等);掌握基本shell程序设计和实现的技能。

实验类型:综合
实验要求:必修
仪器设备:计算机
实验内容、方法、步骤:
1 分支结构(if和elif语句)shell编程
掌握并记忆教材P171示例程序。

编写运行并将源程序(及每行语句注释)和执行结果填写到实验报告中。

2 循环结构(for语句)shell程序设计
掌握并记忆教材P175示例程序。

编写运行并将源程序(及每行语句注释)和执行结果填写到实验报告中。

3 循环结构(while语句)shell编程
掌握并记忆教材P177示例程序。

编写运行并将源程序(及每行语句注释)
和执行结果填写到实验报告中。

4 循环结构(until语句)shell程序设计
掌握并记忆教材P177示例程序。

编写运行并将源程序(及每行语句注释)
和执行结果填写到实验报告中。

5 编写书后习题5,6,7,8,9,10六道题中的程序。

将源程序(及每行语句注释)和执行结果填写到实验报告中。

5
要求:
(1)按时参加实验,保证实验出勤率。

(2)独立或是在同学及老师指导下完成实验内容。

(3)实验之前做好预习及准备工作。

Linux实验三:Shell 程序设计 Shell基础

Linux实验三:Shell 程序设计 Shell基础

题目要求:四种变量的使用配置环境变量元字符和正则表达式引号1. 本地变量$ var1="hello Linux" //定义本地变量var1$ read var2 //定义本地变量vae2$ echo $var1 $var2 //显示本地变量的值2. 环境变量$ env //显示系统的环境变量$ echo $PATH //显示搜索路径变量PATH$ MYNAME="zhangs" //定义本地变量MYNAME$ export MYNAME //将本地变量MYNAME输出为环境变量下面观察环境变量与本地变量作用范围的区别$ echo $var1 $MYNAME //显示本地变量和环境变量输出:hello Linux zhangs$ bash //创建子进程bash$ echo $var1 $MYNAME //显示本地变量和环境变量输出:zhangs$ exit //退出子进程bash$ echo $var1 $MYNAME输出:hello Linux zhangs通过修改环境变量PS1可修改提示符$ PS1=$ //将提示符变为$ps3. 位置变量使用编辑器vi 编辑下列shell 脚本#!/bin/bashecho $0 $1 $2 $3将上述两行脚本保存为文件locat.sh$ chmod +x locat.sh //增加执行权限$ ./locat.sh you me he观察显示结果,理解位置变量的定义。

4. 预定义变量用编辑器vi编辑以下shell脚本#!/bin/bashecho $#echo $*将上述三行保存为文件predef.sh$chmod +x predef.sh //增加执行权限$ ./predef.sh Linux Unix Windows观察运行结果,理解预定义变量的含义。

预定义变量有3个。

分别是:Linux Unix Windows5. 配置环境变量可通过用户主目录下的配置文件,改变系统的启动参数,例如:可通过修改.bash_profile修改环境变量PATH,具体操作如下:$ cd ~ //进入用户的主目录$ vi .bash_profile //编辑配置文件若文件中有下列行:PATH= P A T H ; PATH;PATH;HOME/bin则在PATH路径中增加当前路径,修改后外:PATH= P A T H : PATH:PATH:HOME/bin:.$ exit //退出用该用户的账号重新登录系统执行当前目录下的locat.sh脚本无需制定当前路径,例如:$ locat.sh myname is zhangs6.元字符与正则表达式$ cd ~ //进入用户主目录,中间有空格# ls -l / >list //以详细方式列出根目录下的所有文件信息,重定向至list文件$ grep ^d list // 查询所有目录$ ls *.sh //列出所有后缀名为.sh的shell脚本文件7. 反引号、单引号和双引号$ abc="pwd" //没有空格$ echo '$abc' //只显示单引号内的字符串,abc$ echo "$abc" //显示变量的值,pwd$ echo `"$abc"` //"和`的综合使用,/root$ echo "`pwd`" //为"内的`作出解释,/root$ echo *$ echo "*" //屏蔽元字符的特定含义,*$ echo ‘*’//观察显示结果,*$ echo \* //观察显示结果,*。

LinuxShell脚本实验

LinuxShell脚本实验
在程序出错时要学会调试程序。bash –x 能够进行单步跟踪,将程序的错误找出。 而我们编写和调试的还是太少,所以我发现真的需要我们认真的去多多编写一些程 序,多多练习,发现自己的问题,解决自己的问题。
还有很多提示符和符号在编辑中的使用并不熟悉,有时还会再查书获取其用法, 因此我觉得我对书本和老师的课件掌握的还是不够熟悉,因此我认为自己应该熟悉熟 悉课本尤其是老师课件的内容,起码将老师讲授的全部掌握,然后在拓宽一下自己的 知识,对 Linux 有更深的理解和掌握。
为:求费波纳奇数列的前10项及总和。
二、实验完成
1.编写脚本文件sum.sh,存放在/home/cauc/scripts目录下。脚本功能为:计
算从1加到100的和并返回结果。
程序具体内容如下: #!/bin/bash #Get the sum of 1 to 100 sum=0 for((i=1;i<=100;i++)) do
sum=$(($sum+$i)) done echo “The total number is $sum.”
2.编写脚本文件Fibonacci.sh,存放在/home/cauc/scripts目录下。脚本功能
为:求费波纳奇数列的前10项及总和。
程序具体内容如下: #!/bin/bash #list the first ten numbers of Fibonacci an count them fun2() {
《Linux 操作系统》
实验报告
实验名称: 实验二:Shell 脚本实验
学 号: 姓 名:
提交日期:
任课教师:
一、 实验题目
Shell脚本实验
1.编写脚本文件sum.sh,存放在/home/cauc/scripts目录下。脚本功能为:计算

Linux实验报告(实验四)shell编程实验

Linux实验报告(实验四)shell编程实验

Linux实验报告(实验四)shell编程实验实验四 shell编程实验(二)班级:姓名:学号:上机时间:年月日任课教师:实验教师:实验成绩:一、实验目的综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程。

二、实验注意事项实验室内的实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。

要求每个同学登录后系统后,要在自己的家目录下创建一个属于自己的子目录(以自己(拼音)名字或学号)。

以后所有工作都要在自己的目录内进行。

建议以后的实验都在同台计算机上做,这样可以保持连续性。

三、实验内容1. 编写一个脚本,求斐波那契数列的前10项及总和。

num1=1num2=1echo -n “$num1+$num2”sum=2for((i=1;i<=8;i++))dotmp=$(expr $num1 + $num2)echo -n “+$tmp”((num1=num2))((num2=tmp))sum=$(expr $sum + $tmp)doneecho “=$sum”2.编写一个脚本,求一个数的逆序。

echo -n please input num:read numecho -n The num iswhile [ $num -gt 0 ]dosd=$(($num % 10))echo -n "$sd"num=$(($num/10))doneecho3.设计一个Shell程序,在用户主目录下建立一个userdata目录,在此目录下再建立5个目录,即user1~user5,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

(注意:最后删除自己所建立的目录,恢复原样,以便后面同学做此实验)mkdir -m 754 /home/userdatai=1temp=/home/userdata/userwhile[ $i -le 5 ]domkdir -m 754 $temp$ilet”i=i+1”#done4.用Shell编程,判断一文件是不是普通文件,如果是将其拷贝到/home/student/test 目录下,用命令查看test目录内容,最后再删除test目录。

Shell脚本的设计实验

Shell脚本的设计实验

3.5.5 实验5-Shell脚本的设计实验实验1:深入理解let命令的用法。

比如我们可以用+=、(())等方式来实现运算符let命令:let命令是bash shell内置命令,用来执行整型算术运算和数值表达式测试。

可用命令help let查看当前bash版本支持的let操作符。

1 $ i=5 or let i=5 //变量i被赋值为5。

2 $ let i=i+1$ echo $i6 // let命令给变量i加1。

在执行算术运算时,不需要用美元符来展开变量。

3 $ let "i = i + 2"$ echo $i8 //如果参数包括空白符,则需要使用引号。

4 $ let "i+=1"$ echo $i9 //简写的操作符+=,用来给变量i加1。

5 $ i=3 //变量i被赋值为5。

6 $ (( i+=4))$ echo $i7 //双括号可以用来代替let命令。

变量i的值加4。

7 $ (( i=i-2 ))$ echo $i5 // i的值减2。

也可以写作i-=2。

1)两个小括号内允许空格2)let、expr的区别:expr是个函数表达式必须加空格(不加空格会语法错误)、let是一个命令;二者都不能进行位运算;expr可以直接显示出来、let还需加echo语句才可以显示出来实验2:使用命令替换,通过位置变量的方式来实现一个平方的操作#!/bin/bash //脚本的第一行#!/bin/bash 告诉内核将由哪个shell 解释器来执行程序中的各行。

本例中是由bash解释器执行。

//# Scriptname: do_square //写脚本一定要按照规范化的写作方式,注明脚本名// 1 function square { //或者把function删除在square后加(),square后与{}之间加空格local sq # sq is local to the function //local可以用man来查看,local sq可以不要let "sq=$1 * $1"echo "Number to be squared is $1." //定义函数square。

shell实验报告

shell实验报告

shell实验报告Shell实验报告一、实验目的本次实验旨在通过学习和实践Shell编程,掌握Shell脚本的基本语法和使用方法,提高对Linux系统的操作和管理能力。

二、实验环境本次实验使用的操作系统为Ubuntu 20.04 LTS,Shell编程语言为Bash。

三、实验内容1. Shell脚本的编写在实验开始前,我们首先需要了解Shell脚本的基本结构和语法。

Shell脚本是一种批处理脚本语言,它通过解释器执行,可以用来编写一系列的命令和程序,实现自动化的任务。

2. 变量和数据类型在Shell脚本中,我们可以定义变量来存储和操作数据。

变量可以是整数、字符串等不同的数据类型。

通过使用变量,我们可以方便地在脚本中引用和修改数据。

3. 控制流程控制流程是Shell脚本中非常重要的一部分,它可以用来控制程序的执行顺序和条件。

常见的控制流程语句包括if语句、for循环和while循环等。

通过合理使用控制流程,我们可以实现不同的逻辑和功能。

4. 输入输出Shell脚本可以通过读取用户的输入和输出结果来实现交互式的操作。

我们可以使用read命令来获取用户的输入,并通过echo命令来输出结果。

这样可以增加脚本的灵活性和可用性。

5. 函数和模块化函数是Shell脚本中的一种重要的代码组织方式,它可以将一段代码封装为一个独立的功能模块。

通过定义函数,我们可以提高代码的可读性和重用性。

6. 实际应用通过学习Shell脚本的基本语法和使用方法,我们可以将其应用于实际的系统管理和运维工作中。

比如,我们可以编写一个自动备份脚本,定期备份重要的文件和数据;或者编写一个自动化部署脚本,简化软件部署的流程。

四、实验心得通过本次实验,我对Shell脚本的编写和使用有了更深入的了解。

Shell脚本作为一种强大的工具,可以帮助我们简化繁琐的操作,提高工作效率。

同时,学习Shell脚本还可以培养我们的逻辑思维和编程能力。

在实验过程中,我发现Shell脚本的语法相对简单,上手较快。

指导书_实验指导书:实验一实现简单的Shell

指导书_实验指导书:实验一实现简单的Shell
程序与进程无一一对应关系,一方面一个程序可由多个进程共用;另一方面一个进程 只能对应一个程序。进程和程序的关系犹如演出和剧本的关系。
在一个计算机系统中,CPU 可以交替执行多个程序。尽管 CPU 一直在运行,但就 某个正在执行的程序而言,它并不是一直占用 CPU:可能因为超时让出 CPU,也可能因 为等待 I/O 事件让出 CPU。于是就有了图 2 所示的进程(执行中的程序)的状态模型。 这里执行状态是指进程占用 CPU 的状态,就绪状态是指因为时间超时而让出 CPU 的状 态,阻塞状态是指因为等待 I/O 事件而让出 CPU 的状态。
7 实验设计及操作步骤 1、创建目录,目录名字为“exp1” 2、进入刚创建的目录 3、使用 vi 编辑文件,文件名为 myshellv1.c 4、编写程序,实现一个简单 Shell 功能:能够接收用户输入的命令并正确执行该命
令,输入的命令可以带参数,如果输入“exit”或“logout”时退出 Shell,如果输入的命 令不存在则提示错误。
*envp[]); int execve (const char *path, char *const *argv, char *const *envp); int execlp (const char *file, const char *arg0, ..., const char*argn, (char *)0); int execvp (const char *file, char *const *argv); 说明:参数 path 指出一个可执行目标文件的路径名;参数 file 指出可执行目标文件 的文件名。arg0 作为约定同 path 一样指出目标文件的路径名;参数 arg1 到 argn 分别是 该目标文件执行时所带的命令行参数;参数 argv 是一个字符串指针数组,由它指出该目 标程序使用的命令行参数表,按约定第一个字符指针指向与 path 或 file 相同的字符串; 最后一个指针指向一个空字符串,其余的指向该程序执行时所带的命令行参数;参数 envp 同 argv 一样也是一个字符指针数组,由它指出该目标程序执行时的进程环境,它也 以一个空指针结束。 exec 的六种格式在以下三点上有所不同: path 是一个目标文件的完整路径名,而 file 是目标文件名,它是可以通过环境变

实验4 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函数调用。

实验8:Shell Script(1)

实验8:Shell Script(1)

实验八:Shell Script1实验目的通过实验掌握Linux bash2实验设备硬件:PC机一台软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux 3实验内容(1)S hell中的变量:用户自定义变量与环境变量(2)命令别名(3)B ash shell 的操作环境(4)数据流重定向(5)管道命令4实验预习要求仔细阅读参考书:【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心5实验步骤略6实验重点:(1)什么是Shell ScriptShell script 是利用shell 的功能所写的一个“程序(program)”,这个程序是使用纯文本文件,将一些shell 的语法与命令写在里面,搭配正规表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的。

(2)第一个Shell Script的编写与执行shell script 其实就是纯文本文件,我们可以编辑这个文件,然后让这个文件来帮我们一次运行多个命令,或者是利用一些运算与逻辑判断来帮我们达成某些功能。

在shell script 的编写中还需要注意如下事项:●命令的运行是从上而下、从左而右的分析与运行;●命令的执行:命令、参数间的多个空白都会被忽略掉;●空白行也将被忽略掉,并且[tab] 按键所在的空白同样视为空白键;●如果读取到一个Enter 符号(CR) ,就尝试开始运行该行命令;●如果一行的内容太多,则可以使用“\[Enter] ”来扩展至下一行;●“# “可做为注解!运行shell script的方法:假设shell script放在/root/shell/shell.sh中。

a)直接执行命令:shell.sh文件必须要具备可读与可运行(rx) 的权限,然后:i.绝对路径:使用/root/shell/shell.sh 来执行命令;ii.相对路径:假设工作目录在/root/shell/,则使用./shell.sh 来运行iii.变量PATH功能:将shell.sh 放在PATH 指定的目录内,例如:~/bin/b)以bash 程序来运行:通过”bash shell.sh “或”sh shell.sh “来运行若shell.sh 在~/bin 内且具有rx 的权限,那就直接输入shell.sh 即可运行该脚本程序!当使用sh shell.sh 或bash shell.sh时,shell.sh 只要有r 的权限即可被运行编写第一个shell script[root@localhost ~]# mkdir shellscripts; cd shellscripts[root@localhost shellscripts]# vi sh01.sh#!/bin/bash# Program:# This program shows "Hello World!" in your screen.# History:# 2012-03-18 EE.HBUE First releaseecho "Hello World! \n"exit 0在本章当中,请将所有编写的script 放置到root/shellscript 这个目录内,程序分析:第一行#!/bin/bash 声明这个script 使用的shell 名称:因为我们使用的是bash ,所以,必须要以“#!/bin/bash ”来声明这个文件内的语法使用bash 的语法!那么当这个程序被运行时,他就能够加载bash 的相关环境设置档(一般来说就是non-login shell 的~/.bashrc),并且运行bash 来使下面的命令能够运行!这很重要的!(在很多状况中,如果没有设置好这一行,那么该程序很可能会无法运行,因为系统可能无法判断该程序需要使用什么shell 来运行!)●程序内容的说明:整个script 当中,除了第一行的“#! ”是用来声明shell 的之外,其他的# 都是注解用途!所以上面的程序当中,第二行以下就是用来说明整个程序的基本数据。

linux 实验指导手册 shell编程

linux 实验指导手册 shell编程

linux 实验指导手册 shell编程linux-实验指导手册-shell编程Linux实用操作系统实验指导手册实验二 shell编程(8学时)一、实验名称Shell编程。

2、实验目的掌握shell程序的建立和执行方式;掌握shell中各种变量和函数的使用;熟练掌握shell程序设计中各种控制结构语句是使用;了解shell编程中特殊字符的含义。

三、实验环境RedHat Linux系统企业版4.0及以上IV.实验内容(一)shell程序的建立和执行(2学时)1.依次执行下列命令,理解反馈信息的意义。

$date$pwd$cd..$cd2.创建shell程序脚本$view1datepwdcd..cd保存并退出。

3.检查文件是否存在。

$ls4.执行外壳程序EX1显示反馈信息,与一步命令操作相同。

方式一:输入定向到shell脚本$bash<ex1方法二:将脚本名称作为参数$bashex1$bashex1/usr方式三:将shell脚本的权限设置为可执行,然后在提示符下直接执行它步骤1:$chmoda+xex1步骤2:$mvex1/usr/bin步骤3:$EX1$EX1/usr5.在文本编辑器中录入下面shell程序,保存为ex2,然后执行之。

#!/ 宾/巴什#ifnoarguments,thenlistingthecurrentdirectory.#otherwise,listingeachsubdirecto ry.iftest$#=0thenls.elseforidols-l$i | grep'^d'donefi(二)shell变量(2学时)1.用户定义的变量。

一步一步地执行以下命令,练习变量赋值并理解反馈信息$dir=/home/mengqc/ex1$echo$dir$echodir$today=sunday$echo$today$today$str=”happynewyear.”$echo\2.read命令。

SHELL编程[Bash编程手册]

SHELL编程[Bash编程手册]

SHELL编程[Bash编程⼿册] ============================== SHELL编程 ==============================⼀、Shell语法1.1、变量声明1.2、数组声明和使⽤1.3、特殊的变量1.4、运算和运算符1.4.1、整数运算符1.5、流程语句1.5.1、if 语句1.5.2、case语句1.5.3、select 语句1.6、循环语句1.6.1、for语句1.6.2、while 语句1.6.3、breake 和continue1.6.4、shift⼆、函数三、shell程序调试四、信号五、bash中常⽤的命令=============== ⼀、Shell语法 ===============1.1、变量声明变量=值(注意:等号两侧不能有空格)a=”hello”b=9unset a 撤销变量 areadonly a=2 声明静态的变量 a=2 ,不能 unsetexport 变量名可把变量提升为全局环境变量,可供其他shell程序使⽤变量应⽤中要注意:echo “$1 = $1 ; $2 = $2 “; 屏蔽$1 ,屏蔽 $2 ,直接显⽰ $1 ,$2,同理*也屏蔽了 * 的通配符作⽤${SAT}day ,变量要与字符串连在⼀起时,应该⽤ ${}a= `ls -al` 反引号,运⾏⾥⾯的命令,并把结果返回给变量aa=$(ls -al) 等价于反引号单引号‘’和双引号“”的区别,单引号完全屏蔽 $a 变量,双引号不屏蔽$a,单引号和双引号都屏蔽 * 的通配符作⽤。

1.2、数组声明和使⽤1 name[0]="Tom"2 name[1]="Tomy"3 name[2]="John"4或5 name=("Tom""Tomy""John")例⼦:1 #!/bin/bash2 name=("Tom""Tomy""John")3for i in0124do5echo $i:${name[$i]}6done1.3、特殊的变量$0:脚本名字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
反斜线 转义字符,若想在字符串中使用反斜线本身,则必须采用(\\)的形式,其中第一个反 斜线作为转义字符,而把第二个反斜线变为普通字符。
(3) 条件判断与循环结构
if 语句
练习 1.7 a.建立脚本 ex9:
echo "The current directory is `pwd`" if test - f " $1" then echo " $1 is an ordinary file." else echo " $ 1 is not anordinary file." fi b.执行 ex9:
(4) 函数的定义与调用
同其他高级语言一样,shell 也提供了函数功能。 其定义格式如下:
funcname() {
command ... command; #分号 } 定义函数之后,可以在 shell 中对此函数进行调用 如下所示:
iscontinue() {
while true do
echo -n "Continue?(Y/N)" read ANSWER case $ANSWER in
双引号 由双引号括起来的字符,除$、倒引号和反斜线(\)仍保留其功能外,其余字符通常作 为普通字符对待。 练习 1.5 a.建立以下文件 ex8:
echo"current directory is`pwd`" echo"home directory is $ HOME" echo"file * . ?" echo" directory ' $ HOME ' " b.执行 ex8:
then ( cd $1 ;cat * ) else echo "$1 is neither a file nor a directory." fi fi 如上例改写成为:
if test -f " $1" then cat $1 elif test -d " $1" then ( cd $1 ; cat * ) else echo " $1 is neither afile nor adirectory." fi 测试语句: 有两种常用形式:一种是用 test 命令,如上所示。另一种是用一对方括号将测试条件括 起来。两种形式完全等价。例如,测试位置参数$1 是否是已存在的普通文件,可写成:test -f " $1",也完全可写成:[ -f $ l ] 在格式上应注意,如果在 test 语句中使用 shell 变量,为表示完整、避免造成歧异起见 最好用双引号将变量括起来。利用一对方括号表示条件测试时,在左方括号[之后、右方括 号]之前各应有空格。 练习 1.8 a.建立脚本文件 ex10
Shell编程实验
一、实验目的
了解 Shell 的作用和主要分类。 了解 Bash 的一般语法规则。 练习编写简单的 shell 程序。
二、实验内容
1.Shell 变量的定义及其使用。 2.位置参数和环境变量。 3.Shell 中的特殊字符。 4.条件判断结构与循环结构 5.函数的定义和使用
三、预备知识
1、LINUX 环境下常用命令和 VI 编辑器的操作。 2、了解 Shell 作用和主要分类等基础知识。
四、实验设备及工具
软件:PC 机操作系统 REDHAT ELAS4 环境
五、实验原理及说明
Shell 是 Linux 系统中一个重要的层次,它是用户与系统交互作用的界面。在介绍 Linux 命令时,Shell 都作为命令解释程序出现:它接收用户打入的命令,进行分析,创建子进程 实现命令所规定的功能,等子进程终止工作后,发出提示符。这是 Shell 最常见的使用方式。
$ dir=/usr/mengqc/file1 $ echo $ dir /usr/mengqc/file1 $ echo dir dir $ today=Sunday $ echo $ today $ Today Sunday $ str="Hapy New Year ! " $ echo "Wish You $str" Wish You Happy New Year ! b.read 命令 作为交互式输入手段,可以利用 read 命令由标准输入(即键盘)上读取数据,然后赋 给指定的变量。其一般格式是:read 变量 1 [变量 2...] 练习 1.2: $ read name -----输入 read 命令 mengqc -----输入 name 的值 $ echo "Your Name is $ name." Your Name is mengqc -----显示输出的结果 $ read a b c -----read 命令有三个参数 crtvu cn edu -----输入三个字符串,中间以空格隔开 $ echo "Email : $a. $c. $b" Email : -----显示输出结果 利用 read 命令可交互式的为变量两赋值。输入数据时,数据间以空格或制表符作为分 隔符。注意以下情况: *若变量个数与给定数据个数相同,则依次对应赋值,如上面例子所示。 *若变量数少于数据个数,则从左至右依次给变量赋值,而最后一个变量取得所有余下 数据的值。
$sh ex9 ex1 The current directory is /usr/mengqc ex1 is anordinary file. if 语句的 else 部分还可以是 else-if 结构。 (wj14)
if t - f " $1" then cat $1 else if test - d " $1"
echo "Enter your filename" read filenane if [ -f " $filename"] then cat $ filename else if [ -d " $ filename"] then cd $ filename ls -l * else echo " $ filename:bad filename"
Shell 除了作为命令解释程序以外,还是一种高级程序设计语言,它有变量,关键字, 有各种控制语句,如 if, case, while, for 等语句,有自己的语法结构。利用 Shell 程序设计语 言可以编写出功能很强、但代码简单的程序,特别是它把相关的 Linux 命令有机地组合在一 起,可大大提高编程的效率,充分利用 Linux 系统的开放性能,设计出适合自己要求的命令。
# $1-the nameof the diectory # $2-the of files dir=$1;shift if [ - d $ dir ] then cd $dir for name do if [ -f $name ] then cat $name echo "End of $ {dir} / $name" else echo "Invalid file name: $ {dir} / $name" fi done else echo "Bad directory name : $dir" fi $ b.执行 ex13,并分析运行结果。
*若变量个数多余给定数据个数,则从左到右依次给变量赋值,后面的变量没有输入数 据与之对应时,其值就为空串。
位置参数 执行 Shell 脚本时可以使用参数。由出现命令行上的位置确定的参数称做位置参数。在 sh 中总共有十个位置参数,其对应的名称依次是$0,$1,$2,...$9。其中$0 始终表示命令名或 Shell 脚本名,对于一个命令行,必然有命令名,也就必定有$0;而其它位置参数依据实际 需求,可有可无。 练习 1.3 位置参数的作用。 a.在你的计算机上建立以下三个文件(设建立在目录/usr/username 之下,其中 username 表示你的主目录名): 文件 m1.c:
n1=$1 n2=$2 n3=$3 cat $n1 $n2 $n3 | wc -l b.将 ex5 改为具有执行权限:
$ chmod +x ex5 c.执行脚本 ex5:
$ ex5 m1.c m2.c 10
(2) Shell中的特殊字符
通配符 通常的通配符有三种: * 星号,它匹配任意字符的 0 次或多次出现。但注意,文件名前面的圆点(.)和路径 名中的斜线(/)必须显示匹配。 ? 问号,它匹配任意一个字符。 [] 一对方括号,其中有一个字符组。其作用是匹配该字符组所限定的任意一个字符。 应该注意:字符 * 和 ?在一对方括号外面是通配符,若出现在其内部,它们就失去通 配符的能力了。 ! 叹号,若它紧跟在一对方括号的左方括号[之后,则表示不在一对方括号中所列出的 字符。 引号 在 Shell 中引号分为三种:单引号、双引号、和倒引号。
main( ) { printf("Begin \n"); } 文件 m2.c: # include < stdio.h > { printf("OK! \n"); } 文件 ex3:
# ex3: shell script to combine files and count lines cat $1 $2 $3 $4 $5 $6 $7 $8 $9 | wc -l # end b.将 ex3 改为具有执行权限:
六、实验步骤
1.语法练习
(1) Shell变量
Shell 有两种变量:环境变量和临时变量。在 Shell 脚本中临时变量又分为两类:用户定 义的变量和位置参数。
用户定义的变量 用户定义的变量是最普遍的 Shell 变量,变量名是以字母或下化线打头的字母、数字和 下线符序列,并且大小写字母意义不同。变量名的长度不受限制。定义变量并赋值的一般形 式是: 变量名=字符串 例如, MYFILE=/usr/meng/ff/m1.c a. 定义并显示变量的值 在程序中使用变量的值时,要在变量名前面加上一个符号“$”。这个符号告诉 Shell, 要读取该变量的值。 练习 1.1:
相关文档
最新文档