实验2实验报告
实验成绩 | |
一、实验名称 shell程序设计 | |
二、实验目的 (1) 了解 shell 的编程特点,掌握 shell 程序设计的基础知识。 (2) 对 shell 程序流程控制、shell 程序的运行方式有进一步的认识和理解。 (3) 通过本实验让学生应能够基本掌握编写 shell 程序的步骤、方法和技巧。 | |
三、实验shell界面环境 (1)硬件环境:Intel Pentium III 以上 CPU,128MB 以上内存,2GB 以上硬盘 (2)软件环境:deepin V20操作系统、 sublime编辑器 | |
四、实验内容 (1)编写一段 shell 程序,实现文件的备份和恢复。 (2)编写一段 shell 程序,主要功能是用来存储和查询学生成绩,并提供菜单显示选项;同时可以根据用户输入的选项执行查询、添加等功能。 | |
五、实验原理 (1)操作系统给用户提供了易于使用的界面,Linux 也不例外。Linux 向用户 提供的使用界面有命令行界面(CLI)、图形用户界面(GUI)。在命令行界面下,用户可以向系统提交命令,系统的命令解释器(或 shell)解释执行用户提交的命令,并将结果返回(通常是显示)给用户。在图形用户界面下,用户通过鼠标点击图形对象(如窗口、菜单、图符、按钮等等)向系统发出命令,系统执行该命令并给出结果。在命令行界面下操作 Linux 是本次实验的重点。 (2)shell 是一个命令解释程序,目前几大主流 shell 类型有:Bourne shell, C shell,K shell,分别简写为 bsh, csh, ksh。用 shell 语言写出来的程序,不需要通过编译即可 执行。 shell 提供了你与操作系统之间交互的环境。 | |
六、实验步骤 任务一代码如下: #!/bin/zsh # backup.sh #备份目录函数 backupdir() { dirtest echo "" tar -zcvf /home/ljjtpcn/Desktop/ $DIRECTORY } #恢复目录函数 restoredir() { dirtest echo "" tar -xzvf /home/ljjtpcn/Desktop/ } #验证目录函数 dirtest() { echo "Please enter the directory name of backup file:" read DIRECTORY if [ ! -d $DIRECTORY ] then echo "Sorry,$DIRECTORY is not a directory!" exit 1 fi cd $DIRECTORY } clear ANS=Y while [ $ANS = Y -o $ANS = y ] do echo "===========================" echo "= Backup-Restore Men =" echo "+++++++++++++++++++++++++++" echo "+ 1:Backup Directory +" echo "+ 2:Restore Directory +" echo "+ 3:Exit +" echo "+++++++++++++++++++++++++++" echo "Please enter a choice(1-3):" read CHOICE case "$CHOICE" in 1) backupdir;; 2) restoredir;; 3) exit 1;; *) echo "Invalid Choice!" exit 1;; esac if [ $? -ne 0 ] then echo "Program encounter error!" exit 2 else echo "Operate successfully!" fi echo "Would you like to continue ? Y/y to continue, any other key to exit:" read ANS clear done 任务三代码如下: #!/bin/zsh # mountusb.sh #exit method quit() { clear exit } #add record method add() { clear echo "Enter name and score of a record." echo "\c" if [ ! -f ./record ] ; then touch record fi read NEWNAME echo "$NEWNAME" >> ./record echo "Add Successfully" sort -o ./record ./record } #search method search() { clear echo -n "Please Enter Name >>>" read NAME if [ ! -f ./record ]; then echo "You must have some scores before you can search!" sleep 2 clear return fi until [ ! -z "$NAME" ] do echo "You didn't enter a name!" echo "Please Enter NAME >>>" read NAME done grep -i "$NAME" ./record 2> /dev/null if [ $? = 1 ];then echo "Name not in recond." fi } #delete method delete() { clear echo "Please Enter Name >>>" read NAME if [ ! -f ./record ]; then echo "You must have some scores before you can search" sleep 5 clear return fi until [ ! -z "$NAME" ] do echo "You did't enter a name!" echo "Please Enter Name >>>" read NAME done grep -i "$NAME" ./record 2> /dev/null if [ $? = 1 ];then echo "Name not in record." else cp record record.bak rm -f record grep -vi "$NAME" ./record.bak > record rm -f record.bak echo "Delete Successfully!" fi } #display method display() { more ./record } clear while true do echo "************************************" echo "* STUDENT'S RECORD MENU *" echo "************************************" echo ">>>>>>>#" echo "# 1:ADD A RECORD #" echo "# 2:SEARCH RECORD #" echo "# 3:DELETE A RECORD #" echo "# 4:SHOW ALL RECORD #" echo "# Q:EXIT #" echo ">>>>>>>#" echo -n "Please Enter Your Choice {1,Q}:" read CHOICE case $CHOICE in 1) add;; 2) search;; 3) delete;; 4) display;; Q|q) quit;; *) echo "Invalid Choice!"; sleep 2; clear;; esac done | |
七、实验结果 任务一 解压: 任务三 添加功能 查询功能 未到姓名时有 删除功能 删除不存在的数据时有: 删除成功: 显示所有数据: | |
八、实验总结 通过这个试验,我初步了解了shell的编程特点,也基本掌握了shell程序设计的一些基础性的知识,同时对shell程序的运行方式以及程序控制流程有了进一步的认识,基本掌握了shell程序的编写方法以及一些使用技巧 | |
九、教师评阅意见 | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论