Linux上Shell程序设计.docx
《Linux上Shell程序设计.docx》由会员分享,可在线阅读,更多相关《Linux上Shell程序设计.docx(11页珍藏版)》请在冰豆网上搜索。
Linux上Shell程序设计
深圳大学实验报告
课程名称:
Linux操作系统
实验项目名称:
Linux上shell程序设计
学院:
计算机与软件学院
专业:
指导教师:
冯禹洪
报告人:
学号:
班级:
实验时间:
实验报告提交时间:
教务处制
一、实验目标:
1.熟悉vi编辑器的使用
2.掌握简单的Shell编程
2.1.掌握Shell变量的使用
2.2.掌握Shell表达式的使用
2.3.掌握Shell流程控制语句的使用
3.熟悉Shell程序的执行和跟踪
二、实验环境与工件
湖边Linux实验室
Fedora13
三、实验内容与步骤:
准备工作:
如果当前系统已经有学生名字加学号命名的账号,则直接以该账号登录,然后转2,一次完成后面的实验内容。
i.创建一个以学生名字加学号命名的账号,不如,学生名字为张山,学号为123,则操作如下:
#useraddzhangshan123
#passwdzhangshan123
然后以zhangshan123名字登录
ii.在主目录下
a)创建文件夹:
ShellProgram
$mkdirShellProgram
b)进入ShellProgram子目录
$cdShellProgram
iii.请根据自己对Linux的熟悉程度选做题
(一)或题
(二)
题
(一)
1.下面哪个命令会实现将变量VAR1和VAR2相加,并且值存入变量VAR3的功能?
()(5分)
A.[$VAR3=$VAR1+$VAR2]
B.$VAR3=[$VAR1+$VAR2]
C.$VAR3=((VAR1+VAR2))
D.((VAR3=VAR1+VAR2))
2.以下程序的输出是?
()(5分)
#!
/usr/bin/sh
A=1
while[$A-lt10]
do
B=1
while[$B-lt10]
do
break2
echo"Innerloop"
done
echo"Outerloop"
done
A.“Innerloop”将被打印10次
B.“Outerloop”将被打印10次.
C.“Outerloop”将被打印10次.
D.什么都没有被打印.
3.请在vi中逐一编辑,修正(如果有误)并执行以下10个shell脚本程序,然后结合所学知识和程序的输出理解各程序中各语句的含义,对各小题附上结果截图。
(每小题5分)
3.1.编写一个简单的回显用户名的shell程序。
#!
/bin/bash
#filename:
date
echo"Mr.$USER,Todayis:
"
echo'date'
echoWhishyoualuckyday!
3.2.使用if-then语句创建简单的shell程序。
#!
/bin/bash
#filename:
bbbb
echo-n"Doyouwanttocontinue:
YorN"
readANSWER
if[$ANSWER=N-o$ANSWER=n]
then
exit
fi
3.3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。
#!
/bin/bash
#filename:
ak
echo-n"pleaseinputascore:
"
readSCORE
echo"YouinputScoreis$SCORE"
if[$SCORE-ge60];
then
echo-n"Congratulation!
YouPasstheexamination."
else
echo-n"Sorry!
YouFailtheexamination!
"
fi
echo-n"pressanykeytocontinue!
"
read$GOOUT
3.4.使用case语句创建一个菜单选择的shell程序。
#!
/bin/bash
#filename:
za
#Displayamenu
echo_
echo"1Restore"
echo"2Backup"
echo"3Unload"
echo
#Readandexcutetheuser'sselection
echo-n"EnterChoice:
"
readCHOICE
case"$CHOICE"in
1)echo"Restore";;
2)echo"Backup";;
3)echo"Unload";;
*)echo"Sorry$CHOICEisnotavalidchoice
exit1
esac
3.5.使用for语句创建简单的shell程序。
#!
/bin/bash
#filename:
mm
forabin1234
do
echo$ab
done
3.6.使用for语句创建求命令行上所有整数之和的shell程序。
#!
/bin/bash
#filename:
qqq
sum=0
forINTin$*
do
sum='expr$sum+$INT'
done
echo$sum
3.7.使用while语句创建一个计算1-5的平方的shell程序。
#!
/bin/bash
#filename:
zx
int=1
while[$int-le5]
do
sq='expr$int\*$int'
echo$sq
int='expr$int+1'
done
echo"Jobcompleted"
3.8.使用while语句创建一个根据输入的数值求累加和(1+2+3+4+…+n)的shell程序。
#!
/bin/bash
#filename:
sum
echo-n"PleaseInputNumber:
"
readNUM
number=0
sum=0
while[$number-le$NUM]
do
echonumber
echo"$number"
number='expr$number+1'
echosum
echo"$sum"
sum='expr$sum+$number'
done
echo
3.9.使用until语句创建一个计算1-5的平方的shell程序。
#!
/bin/bash
#filename:
xx
int=1
until[$int-gt5]
do
sq='expr$int\*$int'
echo$sq
int='expr$int+1'
done
echo"Jobcompleted"
3.10.使用until语句创建一个输入exit退出的shell程序。
#!
/bin/bash
#filename:
hk
echo"Thisexampleisfortestuntil....do"
echo"Ifyouinput[exit]thenquitthesystem"
echo-n"pleaseinput:
"
readEXIT
until[$EXIT="exit"]
do
readEXIT
done
echo"OK!
"
4.写一个Shell脚本,接收两个文件名作为参数。
该脚本将检查两个文件内容是否一样,如果一样就删除第二个文件。
请附程序和运行结果截图(5分)
参考代码:
测试:
5.写一个Shell脚本来检查当前目录中所有文件的可执行权限,如果存在一个文件没有可执行权限,则为其添加可执行权限。
请附程序和运行结果截图(5分)
参考代码:
测试:
6.编写一个shell脚本,输入1–10之间的一个数,并判断它是否小于5。
请附程序和运行结果截图,请注意程序的易读性。
(10分)
7.编写一个shell脚本,随机输入5个数,打印出了值为3的倍数的所有数。
(20分)
题
(二)
1.编写shell脚本将当前目录下大于10k的文件转移到/tmp目录下(30分)
#vi10K.sh
#!
/bin/bash
#ext-1
#Usingformovecurrentlydirectoryto/tmp
forFilenamein$(ls-l|awk'$5>10240{print$9}')
do
mv$Filename/tmp
done
ls-la/tmp
echo"Done!
"
2.设计一个Shell程序,在~/data/目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:
读;文件所有者的权限为:
读、写、执行;文件所有者所在组的权限为:
读、执行。
(30分)
#!
/bin/bash
#7.sh
#fileexecutable:
chmod7557.sh
PATH=/bin:
/sbin:
/usr/bin:
/usr/sbin:
/usr/local/bin:
/usr/local/sbin:
~/bin
exportPATH
for((i=1;i<=50;i++))
do
mkdir-p/usrdata/user$i
cd/usrdata
chmod754user$i
done
3.找出系统内大于50k,小于100k的文件,并用长格式显示它们的详细属性.(40分)
四、实验结果
五、实验总结与体会
指导教师批阅意见:
成绩评定:
指导教师签字:
年月日
备注: