歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 如何比較兩個字符串

如何比較兩個字符串

日期:2017/2/27 9:22:48   编辑:更多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比較簡單




Copyright © Linux教程網 All Rights Reserved