实验七  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中逐一编辑并执行以下6shell脚本程序
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 "不存在该用户shell代码!"
      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 "---------"

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。