分页: 1 / 1

sh和bash的问题

发表于 : 2012-02-17 14:56
nismill512
下面是一个很简单的程序,但是用sh和bash执行得出的结果不同:
先不指明解析器
代码.png
代码.png (15.41 KiB) 查看 1590 次
在终端里运行
sh shiyan.sh 和 bash shiyan.sh 分别对 大写字母A 进行判断
运行结果.png
用sh解析可以正确判断出是大写字母,但是用bash解析就会认为A是小写字母,为什么啊?

Re: sh和bash的问题

发表于 : 2012-02-17 16:53
hmk913
[A-Z]改为[[:upper:]]
[a-z]改为[[:lower:]]

Re: sh和bash的问题

发表于 : 2012-02-17 19:31
nismill512
hmk913 写了:[A-Z]改为[[:upper:]]
[a-z]改为[[:lower:]]
改了之后确实可以,我是看国嵌视频教程的,是按他上面做的。
sh和bash有什么区别呢?

Re: sh和bash的问题

发表于 : 2012-02-17 21:56
hmk913
nismill512 写了:
hmk913 写了:[A-Z]改为[[:upper:]]
[a-z]改为[[:lower:]]
改了之后确实可以,我是看国嵌视频教程的,是按他上面做的。
sh和bash有什么区别呢?
貌似是语系环境不同,导致编码顺序不同。
LANG=C:ABC...Zabc...z
LANG=zh_CN: aAbBcC...zZ
当语系为zh_CN,[a-z] 就会包括ABC..Y
如果要用[a-z],最好前面加上 :

代码: 全选

export LC_ALL=C

Re: sh和bash的问题

发表于 : 2012-02-18 10:29
nismill512
hmk913 写了:
nismill512 写了:
hmk913 写了:[A-Z]改为[[:upper:]]
[a-z]改为[[:lower:]]
改了之后确实可以,我是看国嵌视频教程的,是按他上面做的。
sh和bash有什么区别呢?
貌似是语系环境不同,导致编码顺序不同。
LANG=C:ABC...Zabc...z
LANG=zh_CN: aAbBcC...zZ
当语系为zh_CN,[a-z] 就会包括ABC..Y
如果要用[a-z],最好前面加上 :

代码: 全选

export LC_ALL=C
非常感谢

Re: sh和bash的问题

发表于 : 2012-02-18 23:01
lilydjwg
hmk913 写了:
nismill512 写了:
hmk913 写了:[A-Z]改为[[:upper:]]
[a-z]改为[[:lower:]]
改了之后确实可以,我是看国嵌视频教程的,是按他上面做的。
sh和bash有什么区别呢?
貌似是语系环境不同,导致编码顺序不同。
LANG=C:ABC...Zabc...z
LANG=zh_CN: aAbBcC...zZ
当语系为zh_CN,[a-z] 就会包括ABC..Y
如果要用[a-z],最好前面加上 :

代码: 全选

export LC_ALL=C
你这样中文还能正确打出来吗?还是用 en_US.UTF-8 比较好吧。

Re: sh和bash的问题

发表于 : 2012-02-20 11:37
Think1st
牛人一大坨~~这都想到了。