LinuxSir.cn,穿越时空的Linuxsir!

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

case语句的问题

[复制链接]
发表于 2006-3-17 19:45:11 | 显示全部楼层 |阅读模式

  1. case "$1"
  2.         in
  3.                 [0-9]) echo 数字;;
  4.                 [A-Z]) echo 大写字母;;
  5.                 [a-z]) echo 小写字母;;
  6.                 *) echo 特殊字符;;
  7. esac
复制代码

我将上述代码保存为ctype
执行如下命令:

  1. # ./ctype 2
  2. 数字
  3. # ./ctype a
  4. 小写字母
  5. # ./ctype b
  6. 大写字母
  7. # ./ctype A
  8. 大写字母
  9. # ./ctype :
  10. 特殊字符
复制代码

为啥给的参数是一个小写字母时(a除外)echo的结果却是“大写字母”呢?
发表于 2006-3-17 22:00:46 | 显示全部楼层
我也是,不知道
回复 支持 反对

使用道具 举报

发表于 2006-3-17 22:29:11 | 显示全部楼层
你试试这个
[php]
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype b
# ./ctype b
# ./ctype b
# ./ctype b
[/php]
多试几次
回复 支持 反对

使用道具 举报

发表于 2006-3-17 22:29:25 | 显示全部楼层
你试试这个
[php]
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype a
# ./ctype b
# ./ctype b
# ./ctype b
# ./ctype b
[/php]
多试几次
回复 支持 反对

使用道具 举报

发表于 2006-3-18 01:42:32 | 显示全部楼层
Post by wplxb

  1. case "$1"
  2.         in
  3.                 [0-9]) echo 数字;;
  4.                 [A-Z]) echo 大写字母;;
  5.                 [a-z]) echo 小写字母;;
  6.                 *) echo 特殊字符;;
  7. esac
复制代码

我将上述代码保存为ctype
执行如下命令:

  1. # ./ctype 2
  2. 数字
  3. # ./ctype a
  4. 小写字母
  5. # ./ctype b
  6. 大写字母
  7. # ./ctype A
  8. 大写字母
  9. # ./ctype :
  10. 特殊字符
复制代码

为啥给的参数是一个小写字母时(a除外)echo的结果却是“大写字母”呢?

run it with

  1. LANG=C ./ctype b
复制代码
always good to use POSIX standard locale..
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-18 09:16:44 | 显示全部楼层
Post by yongjian
run it with

  1. LANG=C ./ctype b
复制代码
always good to use POSIX standard locale..

执行这个也一样的结果啊
回复 支持 反对

使用道具 举报

发表于 2006-3-18 13:19:36 | 显示全部楼层
hmm... then I don't know. I ran it under posix std locale and it did change to normal.
回复 支持 反对

使用道具 举报

发表于 2006-3-18 19:38:32 | 显示全部楼层

  1. case "$Keypress" in
  2.   [[:lower:]]   ) echo "Lowercase letter";;
  3.   [[:upper:]]   ) echo "Uppercase letter";;
  4.   [0-9]            ) echo "Digit";;
  5.   *                  ) echo "Punctuation, whitespace, or other";;
  6. esac
复制代码


This is more portable. From abs
回复 支持 反对

使用道具 举报

发表于 2006-3-19 00:55:52 | 显示全部楼层
good idea!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-19 08:12:39 | 显示全部楼层
Post by johnny_jiang

  1. case "$Keypress" in
  2.   [[:lower:]]   ) echo "Lowercase letter";;
  3.   [[:upper:]]   ) echo "Uppercase letter";;
  4.   [0-9]            ) echo "Digit";;
  5.   *                  ) echo "Punctuation, whitespace, or other";;
  6. esac
复制代码


This is more portable. From abs

谢谢johnny_jiang
另:From abs是什么意思?
回复 支持 反对

使用道具 举报

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

本版积分规则

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