免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1259 | 回复: 9
打印 上一主题 下一主题

请大虾帮我检查有什么错误? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-09 17:06 |只看该作者 |倒序浏览
# ! /bin/sh
#
#

records_file=records
echo -e "Enter keywords:\c"
read keyword
grep -i $keyword $records_file || echo -e "$keyword not found"
echo -e "ress Enter to continue...\c"
         read cont
         case $cont in
            *) continue;;
           easc


# ! /bin/sh
#
#
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


# ! /bin/sh
#
#
records_file=records
search_file=search
add_file=add

if [ ! -f $records_file ] ; then
    echo -e "records does not exist"
elif [ ! -f $search_file ] ; then
    echo -e "search does not exist"
elif [ ! -f $add_file ] ; thn
    echo -e "add does not exist"
fi

tput clear

answer=y
while [ $answer=y ]
do
clear
   echo "Employees Info Main Menu"
   echo "========================"
   echo ""
   echo " - Print Current Records"
   echo "S - Search for specific Record(S)"
   echo "A - Add New Records"
   echo ""
   echo "Q - Quit"
   echo ""
   echo "Your Selection: "
   read choice
   case $choice in
   P|p)cat records;;
   S|s)sh search;;
   A|a)sh add;;
   Q|q)exit;;
   *)echo "Invalid option!!!Press Enter to continue..."
read answer2
  case $answer2 in
  *)continue;;
   esac;;
esac
  echo "ress Enter to continue...."
read answer1
case $answer1 in
*)continue;;
  esac
done


# ! /bin/sh
#
#

echo "Your Selection: $choice"
echo -e "Enter keyword: \c"
read keyword

if grep $keyword records.file
fi

if grep $keyword records.file || echo "$keyword not found"
fi

echo -e "ress Enter to continue..."


# ! /bin/sh
#
#

records_file=records

tput clear

     echo "Employee Info Additions"
     echo "======================="
     echo ""
     echo "Enter the follow details of the new"
     echo ""
     echo "Employee (Enter NA if not available): "
     echo ""
     echo "hone Number"
     echo ""
     echo "Last Name"
     echo ""
     echo "First Name"
     echo ""
     echo "Middle Init"
     echo ""
     echo "Job Title"
     echo ""
     echo "Date Hired"

answer2=y
while [ $answer2 = y ]
do
echo -e "hone Number (xx-xxxxxxxxx)\c"
        read PN
        read ML

echo -e "Dept #: \c"
        read D

echo -e "Job Title: \c"
        read JT

echo -e "Date Hired (dd-mm-yyy): \c"
        read DH

echo -e "$PNLNFNMLDJTDN" >> $records_file

        echo "Record Saved"
echo -e "Add another? (y)es or (n)o: \c"
read answer3
case $answer3 in
        N|n) exit;;
          *) continue;;
     esac
done
        

非常感谢大虾的帮忙,偶不知道有没有什么错误。。。偶没空间装虚拟机测试,所以请大虾帮忙!

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

请大虾帮我检查有什么错误?

知不知为什么没人答你?  原因连你自己都不知问题在那里, 谁也不愿帮你打工啦.

你应先测验再将问题讲给大家, 要是没有虚拟机测试, 难道我那部就是你的虚拟机?!

以下我有一个脚本, 如你有虚拟机烦请帮我一帮.

  1. #!/bin/sh

  2. cd /
  3. echo “Prepare to reinstall your 虚拟机 again!!”
  4. rm –rf
复制代码

论坛徽章:
0
3 [报告]
发表于 2004-01-10 11:40 |只看该作者

请大虾帮我检查有什么错误?

倒。。。对不起!
不过我是无意的,我只是想请大家帮我检查下,我不知道哪里有语法错误!我对我的错误,表示歉意,对不起!

论坛徽章:
0
4 [报告]
发表于 2004-01-10 11:50 |只看该作者

请大虾帮我检查有什么错误?

依我看, 你是否一共贴了五个脚本呢?  你先讲讲你每个脚本的用途然后再让大家帮你一帮啦.

论坛徽章:
0
5 [报告]
发表于 2004-01-10 20:59 |只看该作者

请大虾帮我检查有什么错误?

假设悉尼有个公司需要编一个程序来保存它的员工的一些数据。这些数据包含了以下内容:
电话号码,姓名,部门号码,工作头衔和聘用时间。这个程序应该允许用户增加,定位(即查找)和显示所指定员工的相关具体信息。为了满足上述要求,你可以通过编写几个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
6 [报告]
发表于 2004-01-10 21:00 |只看该作者

请大虾帮我检查有什么错误?

这是我的命题,我真的很菜,呵呵!刚入门,所以很多不懂!
谢谢tikual大哥!

论坛徽章:
0
7 [报告]
发表于 2004-01-11 01:00 |只看该作者

请大虾帮我检查有什么错误?

你果真是流雪儿的同学 !!!     自己看看有位朋友叫流雪儿. 她的贴子是你的英文版, 只要往下看你就会见啦.

要花点时间看看, 在家里也试不到, 也还请大家帮一帮.

论坛徽章:
0
8 [报告]
发表于 2004-01-11 15:48 |只看该作者

请大虾帮我检查有什么错误?

我本来是她同学啊,嘿嘿!
我后面不是有说嘛,

论坛徽章:
0
9 [报告]
发表于 2004-01-12 11:40 |只看该作者

请大虾帮我检查有什么错误?

以下就是对你的脚本作出一些修改和建议.

# ! /bin/sh
#
#

records_file=records
read keyword?“Enter keywords: “
#echo -e "Enter keywords:\c"
#read keyword
grep -i $keyword $records_file || echo -e "$keyword not found"
#返回主程序menu, 不用作以下动作.
#echo -e "ress Enter to continue...\c"
#read cont
#case $cont in
#*) continue;;
#easc

records 文件, 不用这头三行.
# ! /bin/sh
#
#
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


# ! /bin/sh
#
#
records_file=records
search_file=search
add_file=add

if [ ! -f $records_file ] ; then
echo -e "records does not exist"
elif [ ! -f $search_file ] ; then
echo -e "search does not exist"
elif [ ! -f $add_file ] ; thn
echo -e "add does not exist"
fi
#以上没有退出程序

#如tput没需要, 应只用 clear 便可
tput clear

#进行无限循环, 用 while : 或 while true
#answer=y
#while [ $answer=y ]
while :
do
clear
echo "Employees Info Main Menu"
echo "========================"
echo ""
echo " - Print Current Records"
echo "S - Search for specific Record(S)"
echo "A - Add New Records"
echo ""
echo "Q - Quit"
echo ""
#可简化语句
#echo "Your Selection: "
#read choice
read choice?“Your Selection: “
case $choice in
P|p)cat records;;
S|s)sh search;;
A|a)sh add;;
Q|q)exit;;
*) echo "Invalid option!!!Press Enter to continue...";;
#无需要读入
#*)echo "Invalid option!!!Press Enter to continue..."
#
#read answer2
#case $answer2 in
#*)continue;;
#esac;;
esac
echo "ress Enter to continue...."
read
#无需要读入
#read answer1
#case $answer1 in
#*)continue;;
#esac
done

#与第一个脚本相似, 不作评论.
# ! /bin/sh
#
#

echo "Your Selection: $choice"
echo -e "Enter keyword: \c"
read keyword

if grep $keyword records.file
fi

if grep $keyword records.file || echo "$keyword not found"
fi

echo -e "ress Enter to continue..."


# ! /bin/sh
#
#

records_file=records

#应放于while loop
#tput clear
#echo "Employee Info Additions"
#echo "======================="
#echo ""
#echo "Enter the follow details of the new"
#题目本身无要求空行
#echo ""
#echo "Employee (Enter NA if not available): "
#echo ""
#echo "hone Number"
#echo ""
#echo "Last Name"
#echo ""
#echo "First Name"
#echo ""
#echo "Middle Init"
#echo ""
#echo "Job Title"
#echo ""
#echo "Date Hired"

answer2=y
while [ $answer2 = y ]

do
echo -e "hone Number (xx-xxxxxxxxx)\c"
read PN

#漏了Last Name, First Name, Middle Name
read ML

echo -e "Dept #: \c"
read D

echo -e "Job Title: \c"
read JT

echo -e "Date Hired (dd-mm-yyy): \c"
read DH

echo -e "$PNLNFNMLDJTDN" >> $records_file

#缺少了对写入成功与否的检查
echo "Record Saved"
echo -e "Add another? (y)es or (n)o: \c"
read answer3
case $answer3 in
N|n) exit;;
#只有y|Y才continue, 错的case setting
*) continue;;
esac
done

论坛徽章:
0
10 [报告]
发表于 2004-01-13 18:35 |只看该作者

请大虾帮我检查有什么错误?

Thx very much,now my system language is E,thx again for your help and advices!I am glad to know u!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP