用於
if/while
等作為判斷的條件;
test
命令
test condition
,在條件為
true
時返回
0
;
if
test condition; then
if
[ condition ]; then
#
注意空格,
TBD
是否支援
if 0
...
<==>
...
fi
fi
test
的條件判斷,三種類型
1
)數值比較
-eq -ge -gt -le -lt -ne
2
)字串比較:
=
!=
< >(
注意轉義
) -n(
是否非空串
) -z(
是否空串
)
;
test
中大寫字元小於小寫,剛好與
sort
相反
eg: if [ "a" /> “b” ]; then
eg: if [ -n "$1" ]; then
<==> [ "$1" ]
#$1
需要引起來,否則判斷失敗
eg: if [string1 -a string2]; then
#string1/string2
都為真
eg: if [string1 -o string2]; then #string1
或
string2
為真
3
)檔案比較:
-d file
#directory,
file
是否為目錄
-e
##exist,
file
是否存在
-f
#file
,
an exist file
-r
#readable
-s
#not
empty
-w
#writable
-x
#executable
,且
current user
必須有執行許可權
-O
#owered
by current user
-G
#
檔案預設使用者組為
current user group
file1 -nt file2
# file1 new than file2
file1 -ot file2
# old than
以上比較在檔案不存在時將返回失敗,因此可以先判斷檔案是否存在再執行其他比較;
複合條件比較
類似
C
:
[ cond1 ] && [ cond2 ] || [
cond3 ]
if [
'a' /< 'b' ] && [ 'a' /< "c" ] || [ 'a' /< 'a'
];then
進階特性:
雙圓括弧表數學運算式,也可用於數學計算,
if (( $A ** 2 > 90 ))
雙方括弧提供模式比對功能,可使用Regex,
if [[ $A == r* ]]
TBD
:怎麼表示邏輯非?