今天编了一个shell:
#
#把参数带入的字符划分类型
#
if [ "$#" -ne 1 ]
then
echo "用法: ctype 字符"
exit 1
fi
#
#请确保只键入一个字符
#
char="$1"
numchars=$(echo "$char" | wc -c)
if [ "$numchars" -ne 2 ]
then
echo "请键入一个字符"
exit 1
fi
#
#现在给它分类
#
case "$char" in
[0-9]) echo 数字;;
[a-z]) echo 小写字母;;
[A-Z]) echo 大写字母;;
*) echo 特殊字符;;
esac
root@tanrui-desktop:/bin# sh -x ctype A
#检测结果:
+ [ 1 -ne 1 ]
+ char=A
+ echo A
+ wc -c
+ numchars=2
+ [ 2 -ne 2 ]
+ echo 大写字母
大写字母
root@tanrui-desktop:/bin# ctype A
小写字母
真的很奇怪!
我检测脚本明明输入A显示结果是大写字母,但是当我对A运行脚本时,结果却是小写字母!!
而且同样参数为B时结果也一样。
但是当参数为C-Z时,结果就是大写字母了。难道系统对A和B不识别?
希望高手们多多指教,小弟多谢!!
今天碰到一个问题特别奇怪!
-
- 帖子: 1
- 注册时间: 2007-11-02 10:40
- bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
- 联系:
ABS Guide 写了: 1 #!/bin/bash
2 # 测试字符串范围.
3
4 echo; echo "Hit a key, then hit return."
5 read Keypress
6
7 case "$Keypress" in
8 [[:lower:]] ) echo "Lowercase letter";;
9 [[:upper:]] ) echo "Uppercase letter";;
10 [0-9] ) echo "Digit";;
11 * ) echo "Punctuation, whitespace, or other";;
12 esac # 允许字符串的范围出现在[中括号]中,
13 #+ 或者出现在POSIX风格的[[双中括号中.
14
15 # 在这个例子的第一个版本中,
16 #+ 测试大写和小写字符串的工作使用的是
17 #+ [a-z] 和 [A-Z].
18 # 这种用法在某些特定场合的或某些Linux发行版中不能够正常工作.
19 # POSIX 的风格更具可移植性.
关注我的blog: ε==3