免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 流雪儿
打印 上一主题 下一主题

小女子哀声乞求!!! [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
51 [报告]
发表于 2004-01-07 13:33 |只看该作者

小女子哀声乞求!!!

原帖由 "流雪儿" 发表:
"press Enter to continue"

这个命令怎么写?

你前面不是會用 read 命令來讀取 PN 與 LN 嗎?
那,你可否用 read 讀取另一個變量呢?
若你不指定變量名稱,預設為 REPLY 。
至於讀進變量之後,你用不用?如何用?
it's all up to you, sister....  ^_^

论坛徽章:
0
52 [报告]
发表于 2004-01-07 15:14 |只看该作者

小女子哀声乞求!!!

参考一下吧   
cat 4.sh
#/bin/sh
for i in 1 2 3 4
do
echo 'press enter  to continue '
read var
#if [ $var -eq "\r" ]
if [  "$var" == ""  ]
   then echo "hehe"
        continue
   else echo "thanks"
        break
fi
done

论坛徽章:
0
53 [报告]
发表于 2004-01-07 15:51 |只看该作者

小女子哀声乞求!!!

哦,这样。

谢谢楼上2位。

论坛徽章:
0
54 [报告]
发表于 2004-01-07 20:39 |只看该作者

小女子哀声乞求!!!

请问,怎么样给脚本添加可执行权限?

怎样查看脚本的权限?

论坛徽章:
0
55 [报告]
发表于 2004-01-07 21:10 |只看该作者

小女子哀声乞求!!!

本人提供这个作业命题的中文版本,这样大家都能看懂了!一起探讨这个菜鸟命题!

假设悉尼有个公司需要编一个程序来保存它的员工的一些数据。这些数据包含了以下内容:
电话号码,姓名,部门号码,工作头衔和聘用时间。这个程序应该允许用户增加,定位(即查找)和显示所指定员工的相关具体信息。为了满足上述要求,你可以通过编写几个unix的shell脚本来实现。

首先,你应该在一个文本编辑器里创建一个名为records文件,该文件包含了以下记录信息:
02-95671660:Jones:Sarah:B:45:sales manager:14-12-1995
02-93272658:Simth:John:C:43:technical manager:12-10-1993
02-98781987:Williams:Nick:T:35:computer officer:10-8-1998

接着,你的主脚本(必须命民为menu)需要显示一张程序所提供功能的菜单,程序运行时,用户可以通过选择上述菜单所提供的功能代号,使得程序能完成相应的描述功能。因此,你所编写的程序因完成三个任务:
任务1.可以在屏幕上显示当前所有员工的记录信息
任务2.可以搜索并显示特定员工的记录信息
任务3.在记录文件里增加新员工的记录信息

你可以使用一些简单的UNIX命令来完成任务1。对于任务2和任务3,你必须通过编写两个独立的shell脚本(他们必须分别命名为search和add)来实现。然后,通过上述的主脚本(即menu)来调用这两个脚本。

(好了,至此,我已经把要完成的工作大体描述清楚了,现在来详细描述你们需要完成的任务。)

主脚本menu
你的主脚本menu应该能够显示下面的的菜单,这样程序使用者就可以根据菜单选择相应的操作了。

Employees Info Main Menu
========================

P - Print Current Records
S - Search for specific Record(s)
A - Add New Records

Q - Quit


Your Selection: (waiting for user input)


•        在用户做出相应的选择并且程序执行了相应的功能之后,上面的主菜单必须能够再次显示出来,这样用户就可以做再一次的选择了。你应该使用一个while循环和一个case条件选择语句来编写这个程序。此外,你的主脚本应该能够实现在每次主菜单之前都使得屏幕清空。
•        在你的主脚本menu的开始,你应该定义三个变量,他们的值分别为records, search和 add ,然后在程序中始终用这三个变量来指代另外三个脚本文件: records, search, and add. 比如,你可以这样定义:

record_file=records

这样,在程序的其它地方你就可以通过使用 $record_file 来表示records这个脚本了。这样的定义的好处在于,如果你以后不得不对record这个脚本文件重新命名,你这需在上面程序的变量处改变就可以了,而不需要对程序中任何用到这个record的地方都做改动。

•        定义完所有的变量后,你的主脚本应该检查一下这些所需的脚本文件(records, search, and add)是否都位于当前目录底下。如果里面的任何一个文件不存在,你的menu脚本应该显示以下信息,并退出(exit)脚本的执行。

Required file (填所缺的文件名) does not exist.

比如, if records 文件不存在,信息就应该显示为
Required file records does not exist.

•        你的脚本应该允许用户键入相应的字母(P, S, A, 或 Q且大小写应均可)。如果用户输入的不是代表P, S, A, 或 Q的大小写字母,屏幕上应该出现提示信息:
•         "Invalid code!! Press Enter to continue…" (请保证此时光标应该停在这条提示信息的末尾而不是下一行的开始位置). 在用户输入Enter时,主菜单应该再次显示这样用户可以开始一次全新的选择。


当用户键入P(或p)时
这里提供了一个当用户在主菜单下选择p(或P)时,menu脚本的输出:

(这里显示的是主菜单)

Your Selection: p (p是用户输入的)
02-95671660:Jones:Sarah:B:45:sales manager:14-12-1995
02-93272658:Simth:John:C:43:technical manager:12-10-1993
02-98781987:Williams:Nick:T:35:computer officer:10-8-1998

Press Enter to continue... (程序停在这儿,等待用户输入Enter,然后主菜单重新显示一下,等待用户再次做选择)


你的search脚本
当用户在主菜单下选择S(或s)时, search脚本将被激活。下面是执行search后的一个输出结果的例子:

(这里显示的是主菜单)

Your Selection: s (s是用户输入的)
Enter keyword: Sarah (Sarah是用户输入的)
02-95671620:Jones:Sarah:M:45:admin assistant:12-12-1990

Press Enter to continue... (程序停在这儿,等待用户输入Enter,然后主菜单重新显示一下,等待用户再次做选择)


如果你键入的搜索关键字(keyword)没找到相应的匹配结果,那么这种情况下,search的输出结果如下:

(这里显示的是主菜单)

Your Selection: s (s是用户输入的)
Enter keyword: Kate  (Kate 是用户输入的)
Kate not found

Press Enter to continue... (程序停在这儿,等待用户输入Enter,然后主菜单重新显示一下,等待用户再次做选择)

•       
•        在你的search脚本的开始,你应该定义一个变量来代替records,然后在整个脚本里用该变量指代records文件.

•        你必须允许用户键入的关键字可以是大写的也可以是小写的 (如, sarah 和SARAH 可以产生相同的输出).

你的add脚本
当用户在主菜单下选择A(或a)时, add脚本将被激活。下面是执行add后的一个输出结果的例子:

(这里显示的是主菜单)

Your Selection: a (a是用户输入的)

(首先清屏)

Employee Info Additions=======================
Enter the following details of the new
employee- enter NA if not available:
Phone Number
Last Name
First Name
Middle Init
Dept #
Job Title
Date Hired

Phone Number (xx-xxxxxxxx): 02-90807986 (用户输入)
Last Name: Warren (用户输入)
First Name: Todd (用户输入)
Middle Init:L (用户输入)
Dept #: 20 (用户输入)
Job Title: engineer (用户输入)
Date Hired (dd-mm-yyyy): 01-02-1996 (用户输入)

Record Saved (仅当成功地把记录填加到records文件中的时候,这条信息才能显示出来。如果填加失败,这条信息不应该显示。后一种情况中,应该将错误信息输出中标准错误文件。)

Add another? (y)es or (n)o: y (用户输入)

(如果输入的是y,上面的过程将重新执行一遍-从 (首先清屏)开始重复)


但是,如果用户键入的是n, 程序将退出add 脚本主菜单又被显示出来,这样,
用户就可以再做一次新的选择了。(比如,这时候用户可能想看一下records文件的内容以确保刚才填加的文件确实已经加入到记录中去了) 。如果用户不小心输入的即不是y也不是n,那么程序一样将退出add 脚本并显示主菜单。
•        你必须使用一个while循环来实现上述操作。
•        在你的add脚本的开始,你应该定义一个变量来代替records,然后在整个脚本里用该变量指代records文件.

•        加入三条新的记录到records 文件中去。

论坛徽章:
0
56 [报告]
发表于 2004-01-07 21:29 |只看该作者

小女子哀声乞求!!!

楼主是应付考试的题吗?还是有个项目?

论坛徽章:
0
57 [报告]
发表于 2004-01-07 21:37 |只看该作者

小女子哀声乞求!!!

[quote]原帖由 "hp3070"]楼主是应付考试的题吗?还是有个项目?[/quote 发表:


没有这么简单的项目,是一份很重要的作业。

论坛徽章:
0
58 [报告]
发表于 2004-01-07 21:41 |只看该作者

小女子哀声乞求!!!

这是作业

论坛徽章:
0
59 [报告]
发表于 2004-01-09 15:51 |只看该作者

小女子哀声乞求!!!

原帖由 "ccf" 发表:



老大,能不能多介绍一下shell的调试方法(为了不跑题,可不可以另开新贴),有时候查错真是无从下手





调试shell可以多用echo输出。
检查相关匹配,比如引号(“)
检查空格,比如if中 if [ -f $FILENAME ] ; then
   (这个错误折磨了我好几次。)

论坛徽章:
0
60 [报告]
发表于 2004-01-09 18:36 |只看该作者

小女子哀声乞求!!!

原帖由 "FunkDog" 发表:
本人提供这个作业命题的中文版本,这样大家都能看懂了!一起探讨这个菜鸟命题!

假设悉尼有个公司需要编一个程序来保存它的员工的一些数据。这些数据包含了以下内容:
电话号码,姓名,部门号码,工作头衔和聘?.........


我真怀疑楼主是不是在真心的做作业,强烈建议楼主找一些相关的SHELL书来看一下会好一点。这个作业实在是菜鸟级的。

我一看洋文就头晕,一看作业就四肢发麻。感谢这位兄弟的译文。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP