深圳大学实验报告课程名称:Linux操作系统实验项目名称:Linux上shell程序设计学院:计算机与软件学院专业:软件工程指导教师:冯禹洪报告人:文成学号:2011150259班级:2实验时间:2013-10-08实验报告提交时间:2013-10-30教务处制深圳大学学生实验报告用纸一、实验目标:1.熟悉vi编辑器的使用2.掌握简单的Shell编程2.1.掌握Shell变量的使用2.2.掌握Shell表达式的使用2.3.掌握Shell流程控制语句的使用3.熟悉Shell程序的执行和跟踪二、实验环境与工件湖边Linux实验室Fedora13三、实验内容与步骤1.下面哪个命令会实现将变量VAR1和VAR2相加,并且值存入变量VAR3的功能?(D)(5分)[$VAR3=$VAR1+$VAR2]$VAR3=[$VAR1+$VAR2]$VAR3=((VAR1+VAR2))((VAR3=VAR1+VAR2))2.以下程序的输出是?(D)(5分)#!/usr/bin/shA=1while[$A-lt10]doB=1while[$B-lt10]dobreak2echoInnerloopdoneechoOuterloopdoneA.“Innerloop”将被打印10次B.“Outerloop”将被打印10次.C.“Outerloop”将被打印10次.D.什么都没有被打印.深圳大学学生实验报告用纸3.请在vi中逐一编辑,修正(如果有误)并执行以下10个shell脚本程序,然后结合所学知识和程序的输出理解各程序中各语句的含义,对各小题附上结果截图。(每小题5分)3.1.编写一个简单的回显用户名的shell程序。#!/bin/bash#filename:dateechoMr.$USER,Todayis:echo'date'echoWhishyoualuckyday!3.2.使用if-then语句创建简单的shell程序。#!/bin/bash#filename:bbbbecho-nDoyouwanttocontinue:YorNreadANSWERif[$ANSWER=N-o$ANSWER=n]thenexitfi深圳大学学生实验报告用纸3.3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。#!/bin/bash#filename:akecho-npleaseinputascore:readSCOREechoYouinputScoreis$SCOREif[$SCORE-ge60];thenecho-nCongratulation!YouPasstheexamination.elseecho-nSorry!YouFailtheexamination!fiecho-npressanykeytocontinue!read$GOOUT3.4.使用case语句创建一个菜单选择的shell程序。#!/bin/bash#filename:za#Displayamenuecho_echo1Restoreecho2Backupecho3Unloadecho#Readandexcutetheuser'sselectionecho-nEnterChoice:readCHOICEcase$CHOICEin1)echoRestore;;2)echoBackup;;3)echoUnload;;*)echoSorry$CHOICEisnotavalidchoiceexit1esac深圳大学学生实验报告用纸3.5.使用for语句创建简单的shell程序。#!/bin/bash#filename:mmforabin1234doecho$abdone深圳大学学生实验报告用纸3.6.使用for语句创建求命令行上所有整数之和的shell程序。#!/bin/bash#filename:qqqsum=0forINTin$*dosum='expr$sum+$INT'doneecho$sum3.7.使用while语句创建一个计算1-5的平方的shell程序。#!/bin/bash#filename:zxint=1while[$int-le5]dosq='expr$int\*$int'echo$sqint='expr$int+1'doneechoJobcompleted深圳大学学生实验报告用纸3.8.使用while语句创建一个根据输入的数值求累加和(1+2+3+4+…+n)的shell程序。#!/bin/bash#filename:sumecho-nPleaseInputNumber:readNUMnumber=0sum=0while[$number-le$NUM]doechonumberecho$numbernumber='expr$number+1'echosumecho$sumsum='expr$sum+$number'doneecho深圳大学学生实验报告用纸3.9.使用until语句创建一个计算1-5的平方的shell程序。#!/bin/bash#filename:xxint=1until[$int-gt5]dosq='expr$int\*$int'echo$sqint='expr$int+1'doneechoJobcompleted深圳大学学生实验报告用纸3.10.使用until语句创建一个输入exit退出的shell程序。#!/bin/bash#filename:hkechoThisexampleisfortestuntil....doechoIfyouinput[exit]thenquitthesystemecho-npleaseinput:readEXITuntil[$EXIT=exit]doreadEXITdoneechoOK!深圳大学学生实验报告用纸4.写一个Shell脚本,接收两个文件名作为参数。该脚本将检查两个文件内容是否一样,如果一样就删除第二个文件。请附程序和运行结果截图(5分)5.写一个Shell脚本来检查当前目录中所有文件的可执行权限,如果存在一个文件没有可执行权限,则为其添加可执行权限。请附程序和运行结果截图(5分)6.编写一个shell脚本,输入1–10之间的一个数,并判断它是否小于5。请附程序和运行结果截图,请注意程序的易读性。(10分)7.编写一个shell脚本,随机输入5个数,打印出了值为3的倍数的所有数。(10分)深圳大学学生实验报告用纸四、实验结果1.D2.D3.3.13.23.33.4深圳大学学生实验报告用纸3.53.63.73.8深圳大学学生实验报告用纸3.93.10深圳大学学生实验报告用纸4.写一个Shell脚本,接收两个文件名作为参数。该脚本将检查两个文件内容是否一样,如果一样就删除第二个文件。请附程序和运行结果截图#!/bin/bashif[-z$1];thenechoInputfile1andfile2exitfiif[-z$2];thenechoInputfile2exitfiif[!-f$1];thenecho$1doesn'texist.exitfiif[!-f$2];thenecho$2doesn'texist.exitfiifcmp$1$2thenechoBothfile'scontentarethesamerm-f$2if[$?-eq0];thenecho-eFile$2hasbeendeletesuccessfully.\nelseecho-eErrordeletingfile$2.Pleasecheckwhetheritisaregularfileornot.\nfielseecho-eFile$1and$2aredifferent.\nfi深圳大学学生实验报告用纸5.写一个Shell脚本来检查当前目录中所有文件的可执行权限,如果存在一个文件没有可执行权限,则为其添加可执行权限。请附程序和运行结果截图解:#!/bin/bashclears=0x=0forfilein*.*dos=`expr$s+1`if[!-s$file];thenifchomodu+x$filethenechoSuccessfullyaddexecutablepermissionto$filex=`expr$x+1`elseechofailtoaddexecutablepermissionto$filefifidoneecho-e\nTotalnumberoffilescanned:$secho-eExecutablepermissionaddedto$xfile.\n截图:深圳大学学生实验报告用纸6.编写一个shell脚本,输入1–10之间的一个数,并判断它是否小于5。请附程序和运行结果截图,请注意程序的易读性。(10分)解:#!/bin/bashechopleaseinputanumberbetween1and10:readnumif[$num-ge1-a$num-le10];thenif[$num-lt5];thenechothisnumber5fielseechothisnumberisnotbetween1and10fi截图:深圳大学学生实验报告用纸7.编写一个shell脚本,随机输入5个数,打印出了值为3的倍数的所有数。解:#!/bin/bashi=0echopleaseintput5numberwhile[$i-lt5];doreadarray[$i]((i=i+1))donefornumin${array[@]}doyu=$(($num%3))if[$yu-eq0];thenecho$num能被3整除。fidoneechoend截图:五、实验总结与体会Shell程序设计与C语言程序设计差别不大,仅仅是一些语法的差别。通过本次试验,我也学会一些简单的shell程序设计,也熟悉了vi编辑器的使用。注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。指导教师批阅意见:成绩评定:指导教师签字:年月日备注: