引用自:
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表示判斷後面的值是否為空,不為空則...