shell比較字串

2021-10-02 03:23:29 字數 3153 閱讀 5052

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

if [ "$test"x = "test"x ]; then

這裡的關鍵有幾點:

1 使用單個等號

2 注意到等號兩邊各有乙個空格:這是unix shell的要求

3 注意到"tes

t"x最

後的x,

這是特意

安排的,

因為

當test"x最後的x,這是特意安排的,因為當

test"x

最後的x

,這是特

意安排的

,因為當

test為空的時候,上面的表示式就變成了x = testx,顯然是不相等的。而如果沒有這個x,表示式就會報錯:[: =: unary operator expected

二元比較操作符,比較變數或者比較數字.注意數字與字串的區別.

整數比較

-eq 等於,如:if [ 「a"−

eq

"a" -eq "

a"−eq"

b」 ]

-ne 不等於,如:if [ 「a"−

ne

"a" -ne "

a"−ne"

b」 ]

-gt 大於,如:if [ 「a"−

gt

"a" -gt "

a"−gt"

b」 ]

-ge 大於等於,如:if [ 「a"−

ge

"a" -ge "

a"−ge"

b」 ]

-lt 小於,如:if [ 「a"−

lt

"a" -lt "

a"−lt"

b」 ]

-le 小於等於,如:if [ 「a"−

le

"a" -le "

a"−le"

b」 ]

大於(需要雙括號),如:((「a

">

"a" > "

a">

"b」))

= 大於等於(需要雙括號),如:((「a

">="

a" >= "

a">="

b」))

小資料比較可使用awk

字串比較

= 等於,如:if [ 「a"=

"a" = "

a"="

b」 ]

== 等於,如:if [ 「a"=

="

a" == "

a"==

"b」 ],與=等價

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

1 [[ katex parse error: expected 'eof', got '#' at position 12: a == z* ]] #̲ 如果a以"z"開頭(模式匹配)那麼將為true

2 [[ katex parse error: expected 'eof', got '#' at position 14: a == "z*" ]] #̲ 如果a等於z*(字元匹配),那麼結果為true

34 [ katex parse error: expected 'eof', got '#' at position 11: a == z* ] #̲ file globbing …a" == 「z*」 ] # 如果a等於

z∗(字

符匹配)

,那麼結

果為tr

ue一點

解釋,關

於fil

eglo

bbin

g是一種

關於檔案

的速記法

,比如"

∗.c"

就是,再

如也是.

但是fi

legl

obbi

ng並不

是嚴格的

正則表達

式,雖然

絕大多數

情況下結

構比較像

.!=不

等於,如

:if[

"a等於z*(字元匹配),那麼結果為true 一點解釋,關於file globbing是一種關於檔案的速記法,比如"*.c"就是,再如~也是. 但是file globbing並不是嚴格的正規表示式,雖然絕大多數情況下結構比較像. != 不等於,如:if [ "

a等於z∗(

字元匹配

),那麼

結果為t

rue一

點解釋,

關於fi

legl

obbi

ng是一

種關於文

件的速記

法,比如

"∗.c

"就是,

再如也是

.但是f

ileg

lobb

ing並

不是嚴格

的正則表

達式,雖

然絕大多

數情況下

結構比較

像.!=

不等於,

如:if

["a" != 「b"]

這個操作

符將在[

[]]結

構中使用

模式匹配

.大於,

在asc

ii字母

順序下.

如:if

[[

"b" ] 這個操作符將在結構中使用模式匹配. 大於,在ascii字母順序下.如: if [[ "

b"]這個操

作符將在

[]結構中使

用模式匹

配.大於

,在as

cii字

母順序下

.如:i

f[["

a」 > 「b"]

]if[

"b" ]] if [ "

b"]]if

["a」 > 「$b」 ]

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

具體參考example 26-11來檢視這個操作符應用的例子.

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

-n 字串不為"null"

注意:

使用-n在結構中測試必須要用"「把變數引起來.使用乙個未被」「的字串來使用! -z

或者就是未用」「引用的字串本身,放到結構中。雖然一般情況下可

以工作,但這是不安全的.習慣於使用」"來測試字串是一種好習慣.

shell 字串比較

比較兩個字串是否相等的辦法是 if test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是特意安排的,因為當 test為空的時候,上面的表示式就變成了x testx,顯然是不相等...

Shell比較字串 數值

操作符解釋舉例 eq等於 if a eq b ne不等於 if a ne b gt 大於if a gt b ge大於等於 if a ge b lt小於 if a lt b le小於等於 if a le b 小於 需要雙括號 if a b 小於等於 需要雙括號 if a b 大於 需要雙括號 if a...

Shell數值 字串比較

僅用shell 能否讀取檔案中的第乙個數 二元比較操作符,比較變數或者比較數字.注意數字與字串的區別.整數比較 eq 等於,如 if a eq b ne 不等於,如 if a ne b gt 大於,如 if a gt b ge 大於等於,如 if a ge b lt 小於,如 if a lt b l...