LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 640|回复: 2

帮忙改改我快完成的这个作业,不知道错在哪里

[复制链接]
发表于 2003-12-18 19:52:05 | 显示全部楼层 |阅读模式
跪求各位大哥大姐帮忙改改我快完成的这个作业,不知道错在哪里,帮忙完善一下,我的好像过于简单




运行Shell脚本,首先显示类似如下的菜单:
        What would you like to do:
  List Directory **********************1
  Change Directory*********************2
  Edit file****************************3
  Remove file**************************4
  Add messages in a file***************5
  Search keyword in a specified file***6
  Sorting on a specified field*********7
  Exit Menu****************************8
           Enter your choice:
  
注意:该菜单要能够反复显示,即各项选完后要能再次返回菜单。
2.按1:以长格式列出当前目录内容。
3.按2:改变工作目录到自己指定的目标目录中。(改变后可以用选项1查看该目录中的内容)
4.按3:提示输入一个文件名(该文件可能不存在),然后调用vi编辑器进行编辑。
5.按4:删除一个指定的文件。
6.按5: 提示输入一个文件名,然后将用户在键盘上命令行方式下输入的任何信息都添加并保存到这个文件中,直到用户输入一个结束标志符(如一个空行)后才完成该项操作。
注意:该操作不能是只输入一行后就停止,要能不断输入多行信息;不能调用vi编辑器来输入。
例如:一个名为”phone”的文件,原有内容为(也可以是无内容的新文件):
“ This is a phone list”
现在要在其后添加一些电话薄的字段信息,
选择“5”后,显示:Input the filename that you want to add messages:
然后从键盘输入文件名:phone
接着提示:输入要添加的信息,例如用户要添加如下信息:

David  Brown    (7771)   91101111    m@m.com      …………
Emma  Redd      (6970)   22292222    in@o.com     ………..
Tom  Swanson    (823)    44474444    ai@e.com     ………..
Ming  Li        (0871)   3133333     bb@r.com     ………..
…………….         ……     ……..       …………     ………..

输入完成后,按某个标志键退出该选项。该”phone”文件添加后变为:(可以用选项3查看)

                 This is a phone list   
David  Brown    (7771)   91101111    m@m.com      …………
Emma  Redd      (6970)   22292222    in@o.com     ………..
Tom  Swanson    (823)    44474444    ai@e.com     ………..
Ming  Li        (0871)   3133333     bb@r.com     ………..
…………….         ……     ……..       …………     ………..

7.按6:在指定的文件中查找某个关键字,并显示找到的关键字所在的行。
要求:查找时忽略大小写,并在每个找到的输出行前显示行号,要判断输入的名字是否为文件而非目录,若是文件则进行查找工作,若文件不存在或是目录则显示出错信息。
8.按7:对一个指定的文件按指定的字段进行排序。将排序好的内容重定向到某个文件中,同时也要显示在屏幕上。
例如,上例 添加后的“phone”文件中共分为5个字段,分别为名、姓、区号、电话号码和电子邮件字段。若按第1个字段排序则是以名排序,第2个字段以姓排序,第5字段则是按电子邮件排序,等等。
注意:为方便排序,文件格式请仿照上例“phone”文件,也可以换成学生成绩档案等。(可以利用选项5来完成文件的输入)
9.按8:退出该脚本程序,回到Shell提示符下。
10.在源程序中加入适当的注释。




源程序:
until
    echo ****************What would like to do*************
    echo ****************List Directory*******************1
    echo****************ChangeDirectory*****************2
    echo ****************EditFile************************3
   echo****************RemoveFile**********************4
    echo ****************Add messages in a File***********5
    echo ****************Sreach keyword in a specified****6
    echo ****************Sorting on a specified file******7
   echo****************ExitMenu************************8

    read choice
    test $choice = 8
    do
        case $choice in
        1) ls -l;;
        2) echo Enter target directory
           read dir
           cd $dir
           ;;
        3) echo Enter file name
           read file
           vi $file
           ;;
        4) echo Enter file name
           read file
           rm $file
           ;;
        5) echo Enter the messages
            cat >> phone.list
            wq phone.list
            
           ;;
        6) echo Enter file name
            sort phone.list
           ;;
        7)echo Enter file name
           read file
           ls -x
           ;;
        q|Q|8) echo Goodbye;;
        *) echo illegal Option
    esac
done
:help :help :help :help :help
发表于 2003-12-18 20:41:14 | 显示全部楼层
可以这样;
  1. while
  2. do
  3. cat <<menu
  4. ...#同你的菜单
  5. ...
  6. menu
  7. read choice
  8. case $choice in
  9. ...
  10. ...#同你的代码,如用循环显示菜单的话,在每个选项后加        上continue;;即选完每个数字后又返回主菜单,退出菜单用break;;
  11. ...
  12. esac
  13. done
复制代码
发表于 2003-12-18 21:07:13 | 显示全部楼层
我认为写脚本的方法应该是先把整个脚本的结构规划好,然后一条一条的去调试,可以用bash -x urscript找出出问题的代码并修正,像楼主的脚本分解开来都是很简单的,对于文件的处理,像sed,grep,awk等工具要灵活运用!
BTW:不要像老师留作业似的~~ ;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表