试验报告六SHELL编程.docx
《试验报告六SHELL编程.docx》由会员分享,可在线阅读,更多相关《试验报告六SHELL编程.docx(11页珍藏版)》请在冰豆网上搜索。
试验报告六SHELL编程
实验六SHELL编程
实验环境:
Linux操作系统
实验目的:
(1)掌握vi的三种工作方式,熟悉vi编辑程序的使用。
(2)学习Shell程序设计方法。
掌握编程要领。
实验内容:
1.用Vi编写例1。
练习内部变量和位置参数的用法。
用chmod将文件的权限设置为可执行模式,并在提示符后键入命令行:
$./prog1.
或$shprog1.
屏幕显示:
Namenotprovided
实验截图:
匕tu^p亡L~]4wim簞progl.h
[stu^pcishmypcogl.
[stu^pcl.-■]!
shwprogi^h
Ndinenotprovided
(stu^pclT$・/niwprQgX.hTheodorebf»qh;/ra^prog],h:
Mefileorfdirectory
[乳喀亡].shmypragi,hTheodore
YournameisTheodore
(stu^pcl-]$|
2.进一步修改程序progl.h
要求显示参数个数、程序名字,并逐个显示参数
[stu@pcl*]svim/progl.h
[5tu@pcl-]$./nyprogl.h
Yourshellprogramname15,/^YProq1rh
[stuGlpclT$./myprogl.hHNOKO
Yourparairieternunb-eris3
[stu@pcl-]S|
3•修改例1程序。
用read命令接受键盘输入。
若没有输入显示第一种提示,否则第二种提示。
di^frlaypram
readch
if[-2Secho*ratprovidedecho*rournameis•枇h
then
el
fi
4.用vi编写例2、例3
练习字符串比较运算符、数据比较运算符和文件运算符的用法,观察运行结果。
例2:
^atririgl-"TTlieFirstone-1
^string?
»"TheSecondone*
[string1■=■strings]
then
echo■strina丄equaLtostrLino2w
else
<*chc1notoimg?
"
fl
iff五七ring1]
then
echo"atring丄isnotempt/"
else
■r电hui^slring31(t-npty*
fl
0T|-nstring?
]
then
echo"string^has.aLengthgreatethanzero*else
echoring2hasalengthequialtozero**
(ETugpcl-]$vico®pare
[stu^pc1*Hvicoaipdre.ti
(sTu^pci&hco«ipare.hstinglnotequalostring?
stringlisncleuptystringslias启lengthgre^tethanzero
例3:
t-dLheh
echoHcppdiri%directory*
pchn"cppdlr1noth
irpctor/"
n
(十fileaI
then
ecM'filoabrc^ul^r
els*?
'
ecrw"tlleanotaregularfils'*
r丄
t-rfilea|
the”
echo'"fh住金readpemj_^£iDn$"
els*
rcbK"filcadu亡、noLfcddpriiuik'
fi
[wfilea]
rhpn
ecrw"hdswilLeterni丄s士丄uiif
住I5H
看uhtoHfilconotwrl七乜pcmii^i^nc14
fi
it[-xcppdir|
then
ech-GHcpMduheAemtepenrvl^^ic!
nM
ech«Mcippdirdl&esnothaveexecuteperwis&iofri
运行结果:
cppdir15notadirectoryfileaisnotaregularfilefileadoesnetr-eadpermissionefilefldoesnetwritepernissi口rwcppdirdoesnothaveexecutepernBsLoii
5•修改例2程序。
使在程序运行中能随机输入字符串,然后进行字符串比较
re^d
rjugi
re-^td
stririg^
if(the-n
$rinq].=$strxi>92]
echo*strir»gi_c-quattostrir*g2*
fl
echowstringlnotcqualtostiing2*
讦[then
tstrin^l.]
elte
etho■stringLisnotempty"
fi
echo"iffthen
-o5tring2]
el&e
echo'string?
agreater-thanzero
relic*stnr*g2hkieu
kieu
stringLequal,tostrmqz亍t厂isF)Qten^ty
str-ing2h-asqlength^r^aterth^n2ero
6•修改例3程序。
使在程序运行中能随机输入文件名,然后进行文件属性判断
readfilename
[-dfileandmefilenarti)then
echoSfllenBHe*q>pdirIsdirectory''else
ecfwSfllename*cppdirisnot=»directory11fl
:
[-ffilenane]then
echoSfilenamefi
:
f[-rfilena»ethen
echosfilenamedsc
echo1THenainefi
[-置filenamethen.
echoSTllenanedsc
tefw
fi
「[-xfilenamethen
echfl$fil亡name
ecl"wSfilenameisaregularfile'■fileaisnotaregularfile'
J
-tileahasreadp-erniissions'
"filesdues,notr电aMp«r»LK&ione'*
J
"filaahaswritepcrmisstone"
"fdleadoe^notwrit亡p^rtni&siQiie
J
"tppdirhasexecutepernissipn"
echoifilenamefi
■匚ppdirdo?
snzteie匚utPp?
rmission
1stuOpclf],vicornpdi«
stOci'1$vicompared
stulpcl-13wicompareZ.h
stu^pcl*jl./CGHipare2.h
CMparcZ.h
(pmparrf.hcompart.hfileaisnotaregularflie
fiUadoeinotreadpermis^i^e
(Offlpare2.hfileadoesnotwritepermssiore
compare2.heppdirdoe^nothaveexecutermission
7.用vi编写例4、例5、例6、例7
掌握控制语句的用法,观察运行结果。
例4:
IsTuOpcl'15Text4h
ip;missingdestinationfileoperandafterbackup/Trycp--help'forinfomation.
/text4h:
line4:
[:
tootvwiyarguffcnt?
[stu(3pcl*]svite>t4.htstuflpcl-is/texT4+i
cp:
missingdestinationfileoperandafterbdcdevfaild.
例5:
loopcount=0result=0while[$loopcount—It10]doloopcount='expr$loopcount+1'result='$result+($loopcount*2)done
echo“resultis$result”
例6:
loopcount=0
result=0
until[$loopcount-ge10]
do
loopcount='expr$loopcount+1'result='$result+($loopcount*2)done
echo“resultis$result”
例7:
[Siten="finish*|
8hen
Ir*&dK
n
done
[stu@pci*]£text/.h
1)continue
2)flnisti
#?
1
#?
2
[sti^pd-]*|
8.用vi编写例8及例9
掌握条件语句的用法,函数的用法,观察运行结果。
■i>1in
Bl|『
0?
|-
»3|
04
例&假如给出月份数字作为参数编写程序displaymonth.h
旳I
echo"MOnthisJan";;echo"MonthisFeb-1:
;
echo"MOnthi耳Mar';;echo■HDnthisApr-;;"HQnxhisMay";;echo*MOnthisJun";;ech«'FKnthnJul';;
«cho■nonihisAug-;;
El筑"ho•MOnthisSep*:
;ei«|ie{|echo'M&nthisOct\;011|11>echo'Monthis他严;;?
Q机he"WOnthisDtc-;:
echo"invalid";;
tiSdC
[stuwci«]|ultexra.h[stulpcl*]ItextshInvalid
例9:
|displavKionth()<
$1in
011iflecho"MonthisJan"?
;021曲呼ho"MonthisF电b*;;93echo"MonthisHar";:
B4|4[|echo'MonthIsApr*;;l-fecho"MonthIsMay-;;
J3il酗aie|ie
912|12
96|EQecho*MonthisJun";;Etho"ManthLsJul";:
|ezho'nor:
h15Aua";;echoHH9nth込Sep';;Iecho"Hanthi耳OctB;;echo"KtonthisNov";:
|echo*MqnthisPeC;;
-Qecho■Invalid';;
esse
}displayraonthfl叽ayKnth1Z
[—]svituKtS-h
[stu^pcl'jitexts.h
MonthisAug
MonthisDec
[siu(?
pci-1$|
9.编程,在屏幕上显示用户主目录名(HOME)、命令搜索路径(PATH),并显示由位置参数指定的文件的类型和操作权限。
[stu^pdT$vitext.h
[5tu卽cltextFh
homeis/home/stu
echopatnid/usr/Iocal/oin:
/usr/bin:
/bin:
/usr/openmpi/tin:
:
/opt/intet/composerxeZusr/local/sbin;/usr/sbin:
/sbin:
/honie/stu/bin
[stu^pcl-)$|
体会:
这次shell实验感觉有点难。
在用vi编程结束后运行时总是有语法错误,因为对语
法不太熟悉,因此在修改方面有很大的困难。