开发者社区> 问答> 正文

跪求Linux大神,shell字符集大小写字母顺序问题

#!/bin/bash
function fun1(){
        case $aa in
          [A-Z])
          echo "input [A-Z]"
          ;;
          [a-z])
          echo "input [a-z]"
          ;;
        esac
}
aa=d
export LANG=“en_US.UTF-8”
echo $LANG
fun1
 
export LANG=C
echo $LANG
fun1

展开
收起
a123456678 2016-06-14 10:46:35 2144 0
1 条回答
写回答
取消 提交回答
  • 不要使用 [a-z] 这种表示法, 因为在 zh_CN* locale 下, 这表示这样的范围:
    a A b B ........ x X y Y z

    使用 [A-Z] 则表示:
    A b B C c ......... x X y Y z Z

    若要避免该问题,一般可以把 locale 改成 en_US* 或者是 C, 如:
    export LANG=C

    或者是改 LC_COLLATE 指定字元字串排序時使用 en_US* 或是 C 这种 locale 即可, 如:
    export LC_COLLATE=C

    建议使用POSIX的方式:
    [[:lower:]]
    [[:upper:]]

    2019-07-17 19:36:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 技术揭秘 立即下载
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载