预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

中南大学Linux系统实验报告目录实验一····································3~9实验二···································10~16实验三··································17~17实验一Shell程序设计[实验目的]理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。[实验内容]考勤模拟Shell程序设计用shell设计一个考勤模拟程序实现如下功能选择界面:1.上班签到2.下班签出3.缺勤信息查阅4.退出考勤程序运行后提示用户输入上述功能选择并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。如果是上班签到记录签到信息如果签到时间大于上午8时则提示用户迟到并记录该迟到信息到check.dat。如果是下班签出记录签出信息如果签出时间小于下午6时则提示用户早退并记录该早退信息到check.dat。如果用户选择缺勤信息查询则将check.dat中对应该用户的迟到早退信息查出并显示。用户选择功能执行完shell程序继续回到功能选择界面等待下一个用户进行操作。实验分析本实验是shell程序设计主要目的是理解shell程序的设计方法以及熟悉shell程序的编辑、运行、调试方法与过程。Shell是系统的用户界面提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器它解释由用户输入的命令并且把它们送到内核。不仅如此Shell有自己的编程语言用于对命令的编辑它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点比如它也有循环结构和分支控制结构等用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。本实验要求设计一个考情模拟的shell程序按照题目要求可将整个程序分为五个部分:main函数以及四个功能函数及一个功能对应一个函数。上下班签到将此函数定义为check_in();根据题目要求运行程序后首先要求用户输入用户名和密码当用户名密码正确时才可进入这就要用到shell编程中的变量shell中的变量和C语言或是JAVA中的变量都有所不同shell中的变量不需要事先声明给一个变量赋值实际上就定义了一个变量并且shell程序中的变量是无类型的。我们定义两个变量name和password由题目要求用户名和密码需要由用户输入因此我们定义的变量应该从键盘获取输入值使用如下语句:readnamepassword;我们在开发程序前应先创建一个文件userinfo.dat用于存放用户的用户名和密码当用户输入用户名和密码后就要判断该用户是否合法。方法为从userinfo.dat文件中逐行读取数据并判断是否与用户输入的用户名相同当遇到相同的用户名时就表明该用户是合法的可以退出文件的读取转入判断该用户输入的密码是否正确。从文件中逐行读取数据方法:iftest-e/home/poe/userinfo.datthenwhilereadu_nameu_passworddoiftest"$name"="$u_name"thenbreak;elsecontinue;fidone</home/poe/userinfo.dat用户名和密码正确后用户进入系统系统显示用户签到成功此时还要判断此时的时间是否大于上午8时则提示用户迟到并记录该迟到信息到check.dat。下班签出将此函数定义为check_out()前面部分和上一个函数check_in()相同都为判断用户输入的用户名和密码。不同之处在于记录签出信息如果签出时间小于下午6时则提示用户早退并记录该早退信息到check.dat。缺勤信息查阅将此函数定义为look()首先还是判断该用户输入的用户名和密码是否正确。用户进入系统之后就要打印出该用户的签到信息将check.dat中对应该用户的迟到早退信息查出并显示。在这一步中首先还是要从check.dat文件中逐行读取数据不过并不直接打印而是要等判断用户名后才能打印。whilereadrecorddouser=${record%%*};iftest"$user"="$name"thenecho"$record";fidone</home/poe/check.dat其中user=${record%%*};语句表示截取record字符串从左边起第一个空格前的字符串也就是用户名然后检查和该用户的用户名是否匹配若匹配则打印否则读取下一条。实验源码#!/bin/bashfunctionshow(){echo"---------------