今天写了个简单的shell脚本,测试下case语句,居然发现一个奇怪的现象。程序如下
#!/bin/sh
echo 'Hit a key, then hit return.'
read Keypress
case "$Keypress" in
[a-z] ) echo "Lowercase letter";;
[A-Z] ) echo "Uppercase letter";;
[0-9] ) echo 'Digit';;
* ) echo 'Punctuation, whitespace,or other';;
esac
运行时发现第二个case 总是没运行,输入大写字母的时候仍然打印Lowercase letter.
当我把a-z] ) echo "Lowercase letter";; 和 [A-Z] ) echo "Uppercase letter";; 换位置的时候,输入小写字母的时候又显示 Uppercase letter!
麻烦大家帮我看看是什么问题
顺便问下 cat > hello << MY_PROMGRAM 是表示什么?
谢谢解答
honglianqxw123 于 2012-05-21 08:36:27发表:
学习了,shell编程。谢谢。
于 2012-05-16 08:20:30发表:
#[a-z] 和 [A-Z].
# 这种用法在某些特定场合的或某些Linux发行版中不能够正常工作.
#写成下面的方式
#!/bin/bash
# 测试字符串范围.
echo; echo "Hit a key, then hit return."
read Keypress
case "$Keypress" in
[[:lower:]] ) echo "Lowercase letter" ;;
[[:upper:]] ) echo "Uppercase letter" ;;
[0-9] ) echo "Digit" ;;
* ) echo "Punctuation, whitespace, or other" ;;
esac
于 2012-02-25 14:43:23发表:
我也出现了一样的问题 请问楼主解决了吗 我用的是笔记本
hml1006 于 2011-04-07 15:15:25发表:
shell编程不是很熟
chengshiding 于 2011-04-07 13:47:28发表:
复制上面的内容到test文件里。
[shiding:bin]#chmod +x ./test
[shiding:bin]#./test
Hit a key, then hit return.
f
Lowercase letter
[shiding:bin]#./test
Hit a key, then hit return.
F
Uppercase letter
[shiding:bin]#./test
Hit a key, then hit return.
.
Punctuation, whitespace,or other
[shiding:bin]#./test
Hit a key, then hit return.
5
Digit
[shiding:bin]#
没发现有什么问题啊,没出现你上面的错误哦!
lykginy 于 2011-04-07 13:40:41发表:
输入输出重定向
输入到hello文件 以MY_PROMGRAM为输入结束
lykginy 于 2011-04-07 13:37:20发表:
我直接拷过来没问啊[code]lykling@LYK:~/test/shell$ sh case2.sh
Hit a key, then hit return.
e
Lowercase letter
lykling@LYK:~/test/shell$ sh case2.sh
Hit a key, then hit return.
3
Digit
lykling@LYK:~/test/shell$ sh case2.sh
Hit a key, then hit return.
G
Uppercase letter
lykling@LYK:~/test/shell$ sh case2.sh
Hit a key, then hit return.
'
Punctuation, whitespace,or other
[/code]