当前位置:Linux教程 - Linux资讯 - 如何比较两个字符串

如何比较两个字符串

  我想在shell中完成如下的动作:VAR1=abcd VAR2=ef,那么按照c语言 VAR2大于VAR1了, 可是我看到shell中好象只能检测这两个字符串是否匹配 而不能比较大小啊 好像是不能比较大小。如果用变通的方式呢,似乎可考虑用sort等命令来组合。麻烦点儿。 if [ $VAR1 = `echo "$VAR1 $VAR2"sorthead -1` ] then echo "VAR1 is little than VAR2" else echo "VAR1 is greater that VAR2" fi 不错不错,今天加班也算有收获了 前面加一个相等时的判断,这个字符串比较函数就完整了,呵呵 实际上是利用了sort的排序功能,高 发现新问题:sort 排序时并不时按ascii值时行排序的,将sort的所有选项都试过了,也没能得到按ascii进行排序的结果。 迷惑!!!! 谁给解释并解决一下? 先谢了! sort可以照字典序排列,通常和ascii值是一致的啊. 举个例子,大家来看一下. to valentine: 例如以下两个文件a.txt和b.txt,其中括号内为行首字符的16进制ascii码,b.txt由a.txt排序所得,即sort a.txt >b.txt。可以看出,b.txt的内容并不是按ascii码内容从小到大排列的。 a.txt的内容: (20 空格) (09 tab) _(5f) -(2d) 1(31) a(61) A(41) b.txt的内容: (09 tab) (20 空格) A(41) a(61) 1(31) -(2d) _(5f) 备注:测试环境为sco504。 又:informix排序时是按ascii值大小进行的,而c语言之strcmp好像也是按ascii值的大小进行比较。 对于字母,数字,空格和tab,如果设置正确的LC_CTYPE,sort的结果和ASCII序是一致的. sco下试一下en_US.ascii. 如您所言,LC_CTYPE=en_US.ascii;eXPort LC_CTYPE;sort a.txt >b.txt,b.txt果然按ascii值进行排序。 在solaris8 sparc 上实验通过 谢谢大家和斑竹 其他问题俺不懂,但 俺看第一个问题其实比较简单 expr $var1 > $var2 > /dev/null 是啊,俺也学到东西了 不过就楼主文题而言, expr $VAR1 < $VAR2 不就解决乎? 说错了大家打俺 没错啊,是用expr比较简单

(出处:http://www.sheup.com)