#!/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
不要使用 [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:]]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。