shell 比較判斷

2021-06-04 13:09:00 字數 2223 閱讀 8707

引用自:

shell**  

#! /bin/sh  

var1=20

var2=21

if [ $var1 -ne $var2 ];then  

echo "1. -ne means not equal true"

fi  

xyz="11"

if [ -n "$xyz" ];then  

echo "2. -n means init true(must to use \"\")"

fi  

if [ -z "$1" ];then  

echo "3. -z means not command-line arguments true"

fi  

file="/etc/mtab"

if [ -e $file ];then  

echo "4. -e means file exists true"

fi  

home="/root"

if [ -d $home ];then  

echo "5. -d means dir exists true"

fi  

[ "true" ] && [ "false" ] && [ 0 ] && [ 1 ] && [ -1 ] && echo "6. string and integer means true"

二元比較操作符用來比較兩個變數或數字. 注意整數比較與字串比較的區別.

整數比較

-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"開頭(模式匹配)那麼結果將為真

2 [[ $a == "z*" ]] # 如果$a與z*相等(就是字面意思完全一樣), 那麼結果為真.

3 4 [ $a == z* ] # 檔案擴充套件匹配(file globbing)和單詞分割有效.

5 [ "$a" == "z*" ] # 如果$a與z*相等(就是字面意思完全一樣), 那麼結果為真.

6 7 # 感謝, stephane chazelas

!=不等號

if [ "$a" != "$b" ]

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

<

小於, 按照ascii字元進行排序

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

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

注意">

大於, 按照ascii字元進行排序

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

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

注意">"使用在[ ]結構中的時候需要被轉義.

參考例子 26-11, 這個例子展示了如何使用這個比較操作符.

-z字串為"null", 意思就是字串長度為零

-n字串不為"null".

當-n使用在中括號中進行條件測試的時候, 必須要把字串用雙引號引用起來. 如果採用了未引用的字串來使用! -z, 甚至是在條件測試中括號(參見例子 7-6)中只使用未引用的字串的話, 一般也是可以工作的, 然而, 這是一種不安全的習慣. 習慣於使用引用的測試字串才是正路.

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 小於...

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 小於...

shell指令碼 邏輯判斷與字串比較

整數比較使用 lt,gt,ge等比較運算子,詳情參考 整數比較 檔案測試使用 d,f,x等運算發,詳情參考 檔案測試 邏輯判斷使用 且 或 取反 字串比較實用 字串的比較使用以下三個比較運算子 或者 z表示後面的值是否為空,為空則返回true,否則返回false。n表示判斷後面的值是否為空,不為空則...