实验七 shell编程实验

时间:2024.5.2

实验七  LINUX-Shell编程

一.实验名称:

    Shell 简单编程实验和较复杂的考勤模拟shell程序设计

二.实验目的:

    理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。

三.实验内容:

     考勤模拟Shell程序设计

     用shell设计一个模拟考勤程序,实现如下功能选择界面:

                   1:上班签到

                   2:下班签出

                   3:缺勤信息查阅

    考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。

    如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。

    如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。

    如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。

    用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。

四.实验要求:

      1、掌握Shell程序的编辑、运行、调试方法

      2、完成实验内容要求的功能

五.简单SHELL实验:请在vi中逐一编辑并执行以下6个shell脚本程序

1.编写一个简单的回显用户名的shell程序。

#vi dat

#!/bin/bash

#filename:dat

echo "Mr.$USER,Today is:"

echo `date`

echo Wish you a lucky day!

#chmod  +x  dat

#./dat

2.使用if-then语句创建简单的shell程序。

#vi bbbb

#!/bin/bash

#filename:bbbb

echo -n "Do you want to continue: Y or N"

read ANSWER

if [ $ANSWER=N -o $ANSWER=n ]

then

exit

fi

#chmod  +x  bbbb

#./bbbb

3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。

#vi ak

#!/bin/bash

#filename:ak

echo -n "please input a score:"

read SCORE

echo "You input Score is $SCORE"

if [ $SCORE -ge 60 ];

then

echo -n "Congratulation!You Pass the examination."

else

echo -n "Sorry!You Fail the examination!"

fi

echo -n "press any key to continue!"

read $GOOUT

#chmod  +x  ak

#./ak

4.使用for语句创建简单的shell程序。

#vi mm

#!/bin/bash

#filename:mm

for ab in 1 2 3 4

do

echo $ab

done

#chmod  +x  mm

#./mm

5.使用while语句创建一个计算1-5的平方的shell程序。

#vi zx

#!/bin/bash

#filename:zx

int=1

while [ $int -le 5 ]

do

sq=`expr $int \* $int`

echo $sq

int=`expr $int + 1`

done

echo "Job completed"

#chmod  +x  zx

#./zx

6.使用while语句创建一个根据输入的数值求累加和(1+2+3+4+…+n)的shell程序。

#vi sum

#!/bin/bash

#filename:sum

echo -n "Please Input Number:"

read NUM

number=0

sum=0

while [ $number -le $NUM ]

do

echo number

echo "$number"

number=`expr $number + 1 `

echo sum

echo "$sum"

sum=` expr $sum + $number `

done

echo

#chmod  +x  sum

#./sum

六.较复杂SHELL实验(使用VI编辑 下面代码)

# vi  testshell

#! /bin/bash

#filename:shelltest

exsig=0

while true; do

  echo ""

  echo "----欢迎使用本系统----"

  echo "     1. 上班签到"

  echo "     2. 下班签出"

  echo "     3. 考勤信息查询"

  echo "     4. 退出系统"

  echo "----------------------"

  echo ""

  echo "请输入你的选项:"

  read choice

  case $choice in

    1)echo "请输入你的名字:"

      read name

      echo "请输入你的密码:"

      read password

      if test -r /home/user/userinfo.dat

      then

          while read fname fpassword

          do

            echo "$fname"

            echo "$fpassword"

            if test "$fname" = "$name"

            then

               break

            fi

          done < /home/user/userinfo.dat

      else

          echo System Error:userinfo.dat does not exist!

      fi

      if test "$fname" != "$name"

      then

          echo "不存在该用户!"

      elif test "$fpassword" != "$password"

      then

          echo "密码不正确!"

      else

          hour=`date +%H`

          if test "$hour" -gt 8

          then

             echo "你迟到了!"

             echo "$name 上班迟到---日期:`date`" >>/home/user/check.dat

          else

             echo "早上好,$name!"

          fi

      fi

 ;;

 2)echo "请输入你的名字:"

   read name

   echo "请输入你的密码:"

   read password

   if test -r /home/user/userinfo.dat

   then

      while read fname fpassword

      do

        if test "$fname" = "$name"

        then

           break

        fi

      done < /home/user/userinfo.dat

   else

      echo System Error:userinfo.dat does not exist!

   fi

   if test "$fname" != "$name"

   then

      echo " 不存在该用户!"

   elif test "$fpassword" != "$password"

   then

      echo "密码不正确!"

   else

      hour=`date +%H`

      if test "$hour" -lt 18

      then

         echo "你早退了!"

         echo "$name  下班早退----日期:`date`">> /home/user/check.dat

      else

         echo "再见,$name!"

      fi

   fi

 ;;

 3)echo "请输入你的名字:"

   read name

   echo "请输入你的密码:"

   read password

   if test -r /home/user/userinfo.dat

   then

   while read fname fpassword

     do

       if test "$fname" = "$name"

       then

         break

       fi

     done < /home/user/userinfo.dat

   else

     echo System Error:userinfo.dat does not exist!

   fi

   if test "$fname" != "$name"

   then

       echo "不存在该用户!"

   elif test "$fpassword" != "$password"

   then

       echo "密码不正确!"

   else

       echo "你的记录:"

       echo "---------"

       cat -b /home/user/check.dat|grep $name

       echo "---------"

   fi

 ;;

 4)echo "欢迎你的使用,再见!"

   exsig=1

 ;;

 *)echo "请输入合法的选项!"

 ;;

 esac

 if test "$exsig" = "1"

 then

   break

 fi

done

七.试验运行结果:

#chmod +x testshell

#./testshell

八.注意事项

1.  上面的实验需要在/home/user下有userinfo.dat文件

2.  该userdat.dat文件内容可如下样式:

Wang   23456

Li     22233

……


第二篇:实验3-shell编程


西华大学计算机系上机实践报告

一、目的

1.        了解shell的作用和主要分类

2.        掌握bash的建立和执行方式

3.        掌握bash的基本语法

4.        学会编写shell脚本

二、内容与设计思想

1.        shell脚本的建立和执行

2.        历史命令和别名定义

3.        shell变量和位置参数、环境变量

4.        bash的特殊字符

5.        一般控制结构

6.        算术运算及bash函数

三、使用环境

1.   硬件环境

微型计算机一台(intel® core CPU)(内存2G)

2.   软件环境

Windows XP、VMware Workstation、Ubuntu11

四、核心代码及调试过程

1.利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。然后以不同方式执行该脚本

图1. 建立脚本文件

(1).采用输入定向到shell脚本执行为

图1.1 执行脚本文件

(2).修改shell脚本的权限为可执行

图1.2 执行脚本文件

2.运行history命令,配置历史命令环境。

图2. 显示历史命令

3.体会bash的命令补齐功能。

4.用alias定义别名,然后执行。

图4. alias定义别名执行结果

5.   对思考题4.8进行编辑,然后执行。

图5. 思考题4.8执行结果

6.   对P106例4.6进行编辑,然后执行。

7.   运行例4.20。

取消其中“eval”,执行结果为

五、总结

通过本次实验,了解了shell的作用和分类,掌握了bash的建立和执行方式,掌握了bash的基本语法,能用3种方法对所编写的shell程序执行。运行了几个例题,并学会了编写简单的shell程序,并执行成功。通过history可以查看你自己所用过的所有命令,利用$HISTFILE改变历史命令的保存文件。通过这次上机,明白了shell编程的基本思路,及shell脚本调试方法。通过编写shell程序对shell有了一定的认识,加深了自己对书本知识的理解。

更多相关推荐:
Shell编程实验报告

南京信息工程大学实验实习报告实验目的1了解和熟悉创建并使用脚本的步骤2熟悉bash的控制结构3学会简单的shell编程实验内容1创建一个简单的列目录和日期的shell脚本并运行之步骤输入下列命令创建一个新文件c...

LINUX-Shell编程实验报告

LINUX管理与应用课程实验报告

linux操作系统实验报告_shell简单编程

操作系统实验报告院系机电与信息工程学院实验日期20xx年xx月x日

Linux操作系统(实验五shell编程实验报告)

信息技术学院软件实验报告专业软件工程课程Linux操作系统学号姓名班级软件工程班

LINUX-shell程序编程实验报告

LINUX实验报告专业班级学号姓名报告时间1实验一Shell编程一实验名称考勤模拟shell程序设计二实验目的理解Shell程序的设计方法熟悉Shell程序的编辑运行调试方法与过程三实验内容考勤模拟Shell程...

shell编程实验报告

实验报告课程名称linux教程实验项目shell编程专业班级网络工程xxx指导教师xxx姓名xxxx学号xxx成绩日期xxxx12

实验4 shell 程序设计 实验报告

实验4shell程序设计1采用shell编程语言类似C语言完成1请用C语言编写程序将1100之间能被3或7整除的数显示出来实验结果studentlinuxsusegthomework1sh36791214151...

实验03- Linux Shell编程

操作系统实验报告实验序号3实验项目名称LinuxShell编程

实验二Linux shell编程

湖北工业大学工程技术学院实验报告课程名称操作系统实验内容实验二LinuxShell编程学院工程技术学院专业班级09gb计算机一班姓名匡鑫学号0915023134教师成绩一实验目的1掌握Linux环境shell程...

网络实验6Socket编程实现聊天程序

南昌航空大学实验报告课程名称计算机网络实验名称Socket编程实现聊天程序班级090451班学生姓名杨望学号09045131指导教师评定签名一实验目的1掌握网络应用程序的开发方法2掌握ClientServer结...

WinSocket编程实验报告

实验六WinSock编程实验报告1实验目的和要求1学习网络中进程之间通信的原理和实现方法2掌握在VB或VC等集成开发环境中编写网络程序的方法3编写一个简单的聊天程序最低要求实现两人一组的两台计算机之间的收发文本...

ch33 实验十七 网络编程(一)Socket通信

J2ME程序设计之网络编程一Socket通信J2ME程序设计之网络编程一Socket通信J2ME程序设计之网络编程一Socket通信J2ME程序设计之网络编程一Socket通信J2ME程序设计之网络编程一Soc...

shell编程实验报告(25篇)