shell之數字,字串比較

2021-08-21 10:32:07 字數 1485 閱讀 3465

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" ]

<       小於(需要雙括號),如:(("$a" < "$b"))

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

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

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

字串比較

=       等於,如:if [ "$a" = "$b" ]

==       等於,如:if [ "$a" == "$b" ],與=等價

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

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

2 [[ $a == "z*" ]] # 如果$a等於z*(字元匹配),那麼結果為true

34 [ $a == z* ]      # file globbing 和word splitting將會發生

5 [ "$a" == "z*" ] # 如果$a等於z*(字元匹配),那麼結果為true

一點解釋,關於file globbing是一種關於檔案的速記法,比如"*.c"就是,再如~也是.

但是file globbing並不是嚴格的正規表示式,雖然絕大多數情況下結構比較像.

!=       不等於,如:if [ "$a" != "$b" ]

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

<       小於,在ascii字母順序下.如:

if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

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

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

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

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

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

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

-n       字串不為"null"

注意:使用-n在結構中測試必須要用""把變數引起來.使用乙個未被""的字串來使用! -z或者就是未用""引用的字串本身,放到結構中。雖然一般情況下可以工作,但這是不安全的.習慣於使用""來測試字串是一種好習慣

bash shell數字 字串比較

比較 描述n1 eq n2 檢查n1是否與n2相等 n1 ge n2 檢查n1是否大於或等於n2 n1 gt n2 檢查n1是否大於n2 n1 le n2 檢查n1是否小於或等於n2 n1 lt n2 檢查n1是否小於n2 n1 ne n2 檢查n1是否不等於n2 demo if value1 gt...

1162 數字 字串

時間限制 1000 ms 記憶體限制 65535 kb 難度 0 描述 有一行數字 現在定義 0表示空格,即這行數字被分割成若干個數 要求將這些數按照從小到大順序排列,若該行數字全為零 則表示為零,兩個數字之間可能有多個0,開頭和結尾可能都有0,所有的0都看成空格,數字的個數不超過100。輸入輸入有...

數字字串問題

題目描述 輸入兩個很大的正數 用c字串表示 輸出他們的乘積。採用的方法可以模擬手工乘法 關鍵步驟 void multiply const char a,const char b for int i 0 i ca i for int j 0 j cb j s i j 1 a i 0 b j 0 for...