當前位置:成語大全網 - 新華字典 - linux比較字符串相等linux比較字符串

linux比較字符串相等linux比較字符串

shell中如何比較兩字符串是否相等?

比較兩個字符串是否相等的辦法是:

if;then

這裏的關鍵有幾點:

1使用單個等號

2註意到等號兩邊各有壹個空格:這是unixshell的要求

3註意到"$test"x最後的x,這是特意安排的,因為當$test為空的時候,上面的表達式就變成了x=testx,顯然是不相等的。而如果沒有這個x,表達式就會報錯:

-ne不等於,如:if

-gt大於,如:if

-ge大於等於,如:if

-lt小於,如:if

-le小於等於,如:if

大於(需要雙括號),如:(("$a">"$b"))

>=大於等於(需要雙括號),如:(("$a">="$b"))

小數據比較可使用AWK

字符串比較

=等於,如:if

==等於,如:if,與=等價

註意:==的功能在]和中的行為是不同的,如下:

1]#如果$a以"z"開頭(模式匹配)那麽將為true

2]#如果$a等於z*(字符匹配),那麽結果為true

3

4#Fileglobbing和wordsplitting將會發生

5#如果$a等於z*(字符匹配),那麽結果為true

壹點解釋,關於Fileglobbing是壹種關於文件的速記法,比如"*.c"就是,再如~也是.

但是fileglobbing並不是嚴格的正則表達式,雖然絕大多數情況下結構比較像.

!=不等於,如:if

這個操作符將在]結構中使用模式匹配.

大於,在ASCII字母順序下.如:

if]

if

註意:在結構中">"需要被轉義.

具體參考Example26-11來查看這個操作符應用的例子.

-z字符串為"null".就是長度為0.

-n字符串不為"null"

不區分大小寫如何比較shell腳本中的字符串?

方法壹:妳可以將兩個字符串統統轉成大寫(或小寫),再比較#!/bin/bashxxx=Tempyyy=tempx_tmp=$(echo$xxx|tr

)y_tmp=$(echo$yyy|tr

)if;thenechoPASSelseechoFAILfi優點:通用方法二:用expr的話,得這樣:xxx=Tempif$`-ne0]thenechoPASSelseechoFAILfi優點:高效,但是限制為特定字符序列

如何比較兩個字符串的大小?

字符串是由字符組成的數組。所以比較字符串的大小就是從從左到右比較數組中每壹字符的大小。

假設兩個字符串較短字符串的長度為N,那麽在壹個長度為N的循環中,每次循環都比較兩個字符串數組當前下標對應的字符——如果第壹個字符小於第二個,那麽比較終止,第壹個字符串小於第二個字符串。同樣的,如果第壹個字符大於第二個字符,那麽第壹個字符串就大於第二個字符串。只有在兩個字符相等的情況下,字符數組下標加1,進行數組中下壹個字符的比較。這種比較只有在兩個字符串長度相等並且每壹個字符都相等的情況下兩個字符串才相等。

字符串怎麽比較大小?

1.在比較時,設置壹個計數器,從零開始,壹直循環到最短的那個字符結束,壹位壹位進行比較。

2.如果字符串1的第n位的ASCII碼值等於字符串2的第n位的ASCII碼值則繼續比較下壹位。

3.如果字符串1的第n位的ASCII碼值大於字符串2的第n位的ASCII碼值則輸出結果:1,表示字符串1>字符串2。

4.如果字符串1的第n位的ASCII碼值小於字符串2的第n位的ASCII碼值則輸出結果:-1表示字符串1字符串2。

5.如果每壹位的ASCII碼值都相等,而且長度相同,則輸出結果:0表示字符串1==字符串2。

對兩個字符串進行比較時,要註意以下幾點:

1.兩個不同長度的字符串進行比較時,不是長的字符串就壹定”大”。如A$壹”ABCE”,B$壹”ABCDEF”。對A$與B$進行比較時,A$的第4個字符是”E”,B$的第4個字符是”D”,而”D””E”,所以B$>A$。盡管B$比A$長。2.當字符串有空格時,空格也參加比較。如A$壹”t-壹ABOOK”u(表示空格),B$壹”A—BOOK”,顯示A$>B$。3.大寫字母和小寫字母的ASCII代碼值是有區別的,所以,”yes”>”YEs”。4.當字符串全部用英文字母的大寫(或小寫)組成時,字符串的大小順序和它們在字典中的順序相同。5.由漢字組成的字符串可以參加比較。如”李紅””王軍”。它們的大小實際是由其拼音構成的字符串的大小來決定的。上例即:”LIHONG””WANGJUN”。