shell 脚本比较字符串相等_比较带空格的字符串相等的Shell脚本 如何比较两个.....
****************************比較帶空格的字符串相等的Shell腳本***************************
如果要比較的字符串中間有空格,可以用下面的程序(摘自《Unix Shells by Example, 3rd Edition》)
name="Joe Blow"
if [[ $name == "Joe Blow" ]]
then
printf "Hello $name\n"
fi
如果不帶空格,則可以用下面的程序
name="Joe"
if [ $name = "Joe" ]
then
printf "Hello $name\n"
fi
需要注意的是方括號和等號的數目
****************************************如何比較兩個字符串*******************************
我想在shell中完成如下的動作:VAR1=abcd VAR2=ef,那么按照c語言 VAR2大于VAR1了,
可是我看到shell中好象只能檢測這兩個字符串是否匹配 而不能比較大小啊
好像是不能比較大小。如果用變通的方式呢,似乎可考慮用sort等命令來組合。麻煩點兒。
if [ $VAR1 = `echo "$VAR1 $VAR2"|sort|head -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比較簡單
總結
以上是生活随笔為你收集整理的shell 脚本比较字符串相等_比较带空格的字符串相等的Shell脚本 如何比较两个.....的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 接口强制转换_三分钟学习Jav
- 下一篇: 网红车型上新 坦克300边境版官图发布: