免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2136 | 回复: 2
打印 上一主题 下一主题

echo [a-z] 和 LC_COLLECT 的关系? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-16 12:58 |只看该作者 |倒序浏览
man 中提到 The sorting order of characters in range expressions is determined by the current locale and the value of the LC_COLLATE shell variable,  if  set. 但是我在shell下执行 echo [a-z] ,发现顺序和这个变量无关。

ls 执行后的结果:

$LC_COLLATE="C" ls [a-z]
A  C  E  G  I  K  M  O  Q  S  U  W  Y  b  d  f  h  j  l  n  p  r  t  v  x  z
B  D  F  H  J  L  N  P  R  T  V  X  a  c  e  g  i  k  m  o  q  s  u  w  y

$LC_COLLATE="en_US" ls [a-z]
a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y

echo 执行后的结果:
$LC_COLLATE="C" echo [a-z]
a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z

$LC_COLLATE="en_US" echo [a-z]
a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z

为什么在LC_COLLATE=C 的时候 ls 和 echo  得到的结果是不同的呢?

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
2 [报告]
发表于 2011-08-16 13:24 |只看该作者
不明白,echo [a-z]会把大写的文件或者目录也打印出来?

论坛徽章:
0
3 [报告]
发表于 2011-08-16 15:54 |只看该作者
我搞错了,shell扩展一定将[a-z]扩展为 aA..zZ,但是echo的结果没有经过排序,而ls的结果被排序了。LC_COLLATE 只影响排序的结果,不影响扩展的结果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP