sh和bash的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
nismill512
帖子: 9
注册时间: 2012-02-09 18:54

sh和bash的问题

#1

帖子 nismill512 » 2012-02-17 14:56

下面是一个很简单的程序,但是用sh和bash执行得出的结果不同:
先不指明解析器
代码.png
代码.png (15.41 KiB) 查看 1586 次
在终端里运行
sh shiyan.sh 和 bash shiyan.sh 分别对 大写字母A 进行判断
运行结果.png
用sh解析可以正确判断出是大写字母,但是用bash解析就会认为A是小写字母,为什么啊?
hmk913
帖子: 17
注册时间: 2011-08-19 10:32

Re: sh和bash的问题

#2

帖子 hmk913 » 2012-02-17 16:53

[A-Z]改为[[:upper:]]
[a-z]改为[[:lower:]]
nismill512
帖子: 9
注册时间: 2012-02-09 18:54

Re: sh和bash的问题

#3

帖子 nismill512 » 2012-02-17 19:31

hmk913 写了:[A-Z]改为[[:upper:]]
[a-z]改为[[:lower:]]
改了之后确实可以,我是看国嵌视频教程的,是按他上面做的。
sh和bash有什么区别呢?
hmk913
帖子: 17
注册时间: 2011-08-19 10:32

Re: sh和bash的问题

#4

帖子 hmk913 » 2012-02-17 21:56

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
nismill512
帖子: 9
注册时间: 2012-02-09 18:54

Re: sh和bash的问题

#5

帖子 nismill512 » 2012-02-18 10:29

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
非常感谢
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: sh和bash的问题

#6

帖子 lilydjwg » 2012-02-18 23:01

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 比较好吧。
头像
Think1st
帖子: 45
注册时间: 2012-02-07 23:08

Re: sh和bash的问题

#7

帖子 Think1st » 2012-02-20 11:37

牛人一大坨~~这都想到了。
在这里,问题比答案更抢手。
回复