实验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小时内删除。