LinuxSir.cn,穿越时空的Linuxsir!

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

小弟才学SHELL刚不久,有很多不懂之处,还请请教。现有一个问题

[复制链接]
发表于 2005-8-8 13:19:44 | 显示全部楼层 |阅读模式
大家好。小弟才学SHELL刚不久,有很多不懂之处,还请请教。现有一个问题,如下:
有一张表:
A      张三
B      李四
C      王五
D      麻六

现在我想进行查询,比如输入A,就输出结果“张三”,输入B就输出李四。请给一条思路。

另外我想对kiron兄道个歉,虽然kiron兄回帖的时候语气不是很友善,但还是谢谢他的帮助。
发表于 2005-8-8 13:22:01 | 显示全部楼层
用case啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-8 13:35:07 | 显示全部楼层
Post by cscscheng
用case啊


好快的动作。
你的意思是不是用下面的形式?
    #Display a menu
       echo _
       echo "1 Restore"
       echo "2 Backup"
       echo "3 Unload"
       echo
  
       #Read and excute the user's selection
       echo -n "Enter Choice:"
       read CHOICE
  
       case "$CHOICE" in
        1)      echo "Restore";;
        2)      echo "Backup";;
        3)      echo "Unload";;
        *)      echo "Sorry $CHOICE is not a valid choice
                exit 1
        esac

那如果我想把上面的列表保存为一个文件,然后用一个脚本来查询文件中的内容,怎么实现?
如果上面表中的字段有成百条,哪种方法执行快一点?
回复 支持 反对

使用道具 举报

发表于 2005-8-8 13:45:29 | 显示全部楼层
file ttt

A 123
B 456
C 789

------------------------
x=A
grep "^$x" ttt | cut -d ' ' -f2
输出为 123

明白了吗?
回复 支持 反对

使用道具 举报

发表于 2005-8-8 14:01:02 | 显示全部楼层
Post by yu330
好快的动作。
你的意思是不是用下面的形式?
    #Display a menu
       echo _
       echo "1 Restore"
       echo "2 Backup"
       echo "3 Unload"
       echo
  
       #Read and excute the user's selection
       echo -n "Enter Choice:"
       read CHOICE
  
       case "$CHOICE" in
        1)      echo "Restore";;
        2)      echo "Backup";;
        3)      echo "Unload";;
        *)      echo "Sorry $CHOICE is not a valid choice
                exit 1
        esac

那如果我想把上面的列表保存为一个文件,然后用一个脚本来查询文件中的内容,怎么实现?
如果上面表中的字段有成百条,哪种方法执行快一点?


关于制做一个菜单的问题,我说一下我的方法,有两种办法:
1)用一个死循环来做选择,类似如下:
  1. while :
  2. do
  3. echo -n "Please Input :"
  4. read ANS
  5. case $ANS in
  6. A)
  7. echo "You INPUT is A"
  8. break
  9. ;;
  10. B)
  11. echo "You INPUT is B"
  12. break
  13. ;;
  14. *) echo "I'm Sorry, Bad input. Please Input Again."
  15. esac
  16. done
复制代码


2)用select语句。

  1. select CHOICE in A B C
  2. do
  3. case $CHOICE in
  4. A)
  5. echo "You CHOICE is A"
  6. break
  7. ;;
  8. B)
  9. echo "You CHOICE is B"; break
  10. ;;
  11. *)
  12. echo "I'm Sorry, Please Input Again"
  13. esac
  14. done
复制代码


在菜单中加入楼上九号兄的grep,就万事俱备了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-8 15:51:21 | 显示全部楼层
谢谢。想问一下while : 后面的:代表什么呢?
回复 支持 反对

使用道具 举报

发表于 2005-8-8 16:36:07 | 显示全部楼层
Post by yu330
谢谢。想问一下while : 后面的:代表什么呢?


true forever
回复 支持 反对

使用道具 举报

发表于 2005-8-8 17:44:41 | 显示全部楼层
while true 也可 :-)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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