我做了一个简短的测试,因为冒号字符似乎有:
问题。脚本打印字符,很明显冒号出现在 之后9
,但在运行字符串测试之后,它看起来实际上出现在正斜杠之后/
。是什么赋予了?
$ cat chartest.sh
#!/bin/sh
echo $LANG
for i in {33..126}; do
printf -v hex "%x" "$i"
printf "\x$hex"
done
echo
[[ : > 9 ]] && echo true || echo false
[[ : > / ]] && echo true || echo false
$ ./chartest.sh
en_US.UTF-8
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop
qrstuvwxyz{|}~
false
true
我发现如果我使用旧的测试功能它可以正常工作
$ [ : \> 9 ] && echo true || echo false
true
也相关