专 业:
班 级:
学 号:
姓 名:
报告时间:
实验一 Shell编程
一.实验名称:
考勤模拟shell程序设计
二.实验目的:
理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。
三.实验内容:
考勤模拟Shell程序设计
用shell设计一个模拟考勤程序,实现如下功能选择界面:
1:上班签到
2:下班签出
3:缺勤信息查阅
考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。
用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。
四.实验要求:
1、掌握Shell程序的编辑、运行、调试方法
2、完成实验内容要求是现的功能
3、撰写实验报告
五.试验运行代码:
6、试验运行结果:
六.实验心得
学到了一些有关linux 的知识,还亲自参加了linux的安装party, 这些都让我对产生了了解和掌握linux的愿望。在这方面,我只是个初学者,我希望跟我一样抱着学习linux的心态但不知如何学习这方面技术而感到无从下手的初学者在看了这篇文章后,能够找到深入了解linux 的方向和办法。
以下就是学习linux的一个循序渐进的过程
一.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的
它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。
我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单
二.进阶
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面环境操作
掌握.tgz.rpm.biz等软件包的常用安装方法
学习添加外设,安装设备驱动程序(比如modem)
熟悉Grub/Lilo引导器及简单的修复操作计算机|外语|培训|资料|视频|课件|下载(j.h|s}zHS5p
熟悉系统固有目录的名称及公用学会用mount命令访问其他文件系统了解vi,gcc,gdb等常用编辑器,编译器,调试器学习linux环境下的简单组网
南京信息工程大学实验(实习)报告 实验(实习)名称 shell脚本编程 实验(实习)日期 得分 指导教师 系 计算机 专业 计算机科学与技术 年级 班次 姓名 学号 一·【实验目的】
1、了解和熟悉创建并使用脚本的步骤。
2、熟悉bash 的控制结构。
3、学会简单的shell 编程。
二·【实验内容】
1、创建一个简单的列目录和日期的shell脚本并运行之。
步骤:
⑴输入下列命令,创建一个新文件:
cat >new_script
⑵输入下列行:
echo “Your files are”
ls
echo “today is”
date
按回车键将光标移到一个新行,按Ctrl+D键保存并退出。
⑶检查文件内容,确保它是正确的:
#cat new_script
⑷运行脚本,输入它的文件名:
#new_script
该脚本不运行。
⑸输入下列命令,显示文件的权限:
#ls –
l new _script
权限表明该文件不是可执行。要通过简单调用文件名来运行脚本,必须有权限。 ⑹输入下列命令,使new_script 变成可执行文件。
chmod +x new_script
⑺要查看新的权限,输入:
ls –l
现在拥有文件的读、写和执行权限。
⑻输入新脚本的名字以执行它:
new_script
所有输入到文件的命令都执行,并输出到屏幕上。
⑼如果接收到错误信息,比如:
command not found
输入下列命令:
#./new_script
日 10月 11 12:37:00 CST 2009
该命令行通知shell 到哪里寻找shell 脚本new_script,即您的当前目录“.”。
2、用Shell 语言编制一Shell 程序,该程序在用户输入年、月之后,自动打印数出该年该 月的日历。
<参考程序>
echo “Please input the month:”
read month
echo “Please input the year:”
read year
cal $month $year
3、编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同则显 示“Match”,并显示“End of program”,如果不同则显示“End of program”。 <参考程序> 提示:echo –n 是显示内容,但不回车换行
$ cat > if1
echo –n “word 1:”
read word1
echo –n “word 2:”
read word2
if test “$word1” = “$word2”
then
echo “Match”
fi
echo “End of program.”
<程序说明>
①if?then 控制结构的语法是:
if test_command
then
commands
fi
②其中test_command 为test “$word1” = “$word2”, test 是一个内置命令,如果它的 第一个参数和第三个参数存在第二个参数所指定的关系,那么test 将返回ture。Shell 将执 行then 和fi 之间的命令。否则执行fi 后面语句。
4、修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果 两个单词相同显示“Match”,不同则显示“Not match”,最后显示“End of program”。 <编程提示>请使用if?then?else 控制结构。
5、编程使用case 结构创建一个简单的菜单,屏幕显示菜单:
a. Current date and time
b. User currently logged in
c. Name of the working directory
d. Contents of the working directory
Enter a,b,c or d:
根据用户输入选项做相应操作。
<参考程序>
echo –e “\n COMMAND MENU\n”
echo “ a. Current date and time”
echo “ b. User currently logged in”
echo “ c. Name of the working directory”
echo “ d. Contents of the working directory\n”
echo –n “Enter a,b,c or d:”
read answer
echo
case “$answer” in
a)date;;
b)who;;
c)pwd;;
d)ls;;
*)
Echo “There is no selection : $answer”;;
esac
6、修改上题,使用户可以连续选择直到想退出时才退出。
While[t]
Do
clear
echo –e “\n COMMAND MENU\n”
echo “ a. Current date and time”
echo “ b. User currently logged in”
echo “ c. Name of the working directory”
echo “ d. Contents of the working directory\n”
echo –n “Enter a,b,c or d:”
read answer
echo
case “$answer” in
a)date;;
b)who;;
c)pwd;;
d)ls;;
e)return;;
*)Echo “There is no selection : $answer”;;
esac
done
7、编程使用select结构生成一个菜单如下:
1)apple 3)blueberry 5)orange 7)STOP
2) banana 4)kiwi 6)watermelon
Choose your favorite fruit from these possibilities:
用户输入所选项,如 1 显示:
You chose apple as you favorite.
That is choice number 1.
<参考程序>
#!/bin/bash
PS3=“Chose your favorite fruit from these possibilities:”
select FRUIT in apple banana blueberry kiwi orange watermelon STOP do
if [ $FRUIT = STOP ] then
echo “Thanks for playing!”
break
fi
echo “You chose $FRUIT as you favorite.”
echo “That is choice number $REPLY.”
echo
done
<程序说明>
①
do select 结构的语法如下: select varname[in arg?]
commands
done
②REPLY 是键盘变量。
8、上机编写如下代码,分析下面的程序,简要说明整体功能,并解释每条语句。
#!/bin/sh
val=1
while (test $val -lt 6)
do touch file$val
date>>file$val
val=`expr $val + 1`
done
9、编写一段shell程序,根据执行时候获取的当前时间显示出不同的问候信息。
#!/bin/bash
a=`date +%H`
if (test $a -lt 12);
then
echo "Good Morning!"
else
echo "Good Afternoon!"
fi
10、用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下
myfile=/path/filename # 换成你实际的文件全路径
fd=`ls -l myfile` # 获取文件详细信息
fp=${fd:0:1} # 截取第一个属性值
[ "$fp" = "c" ] && cp myfile /dev # 如果该属性值为c,则为字符设备文件,拷贝到/dev目录
11、在根目录下有四个文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell 编程,实现自动创
建m1,m2,m3,m4四个目录,并将m1.txt,m2.txt,m3.txt,m4.txt四个文件分别拷贝到各自相应的目录下 #!/bin/bash
for var in 1 2 3 4
do
mkdir "m$var"
mv /"m$var.txt" /"m$var"/
done
南京信息工程大学实验实习报告实验目的1了解和熟悉创建并使用脚本的步骤2熟悉bash的控制结构3学会简单的shell编程实验内容1创…
LINUX实验报告专业班级学号姓名报告时间1实验一Shell编程一实验名称考勤模拟shell程序设计二实验目的理解Shell程序的…
实验报告学生打印后提交实验名称shell编程实验时间10年04月21日实验人员姓名学号年级实验目的1熟悉使用Linux下的软件开发…
南京信息工程大学实验实习报告实验目的1了解和熟悉创建并使用脚本的步骤2熟悉bash的控制结构3学会简单的shell编程实验内容1创…