shell 檔案判斷

2021-06-17 21:21:39 字數 2851 閱讀 7552

if 使用的表示式

primary 意義

[ -a 檔案 ] 如果檔案存在為真。

[ -b 檔案 ] 如果 檔案 存在 而且 是乙個 塊-特殊 檔案為真。

[ -c 檔案 ] 為真 如果 檔案 存在 而且 是乙個 字-特殊 檔案。

[ -d 檔案 ] 為真 如果 檔案 存在 而且 是乙個 目錄。

[ -e 檔案 ] 為真 如果 檔案 存在。

[ -f 檔案 ] 為真 如果 檔案 存在 而且 是乙個 普通 檔案。

[ -g 檔案 ] 為真 如果 檔案 存在 而且 已經設定了他的 sgid 位。

[ -h 檔案 ] 為真 如果 檔案 存在 而且 是乙個 符號連線。

[ -k 檔案 ] 為真 如果 檔案 存在 而且 他的粘住位已經設定。

[ -p 檔案 ] 為真 如果 檔案 存在 而且 是乙個 已經命名的管道 (f 如果o)。

[ -r 檔案 ] 為真 如果 檔案 存在 而且 是可讀的。

[ -s 檔案 ] 為真 如果 檔案 存在 而且 比零位元組大。

[ -t fd ] 為真 如果 檔案 檔案描述符已經開啟 而且 指向乙個終端。

[ -u 檔案 ] 為真 如果 檔案 存在 而且 已經設定了他的 suid (set user id)位。

[ -w 檔案 ] 為真 如果 檔案 為真 如果 檔案 存在 而且 是可寫的。

[ -x 檔案 ] 為真 如果 檔案 存在 而且 是可執行的。

[ -o 檔案 ] 為真 如果 檔案 存在 而且 屬於有效使用者id。

[ -g 檔案 ] 為真 如果 檔案 存在 而且 屬於有效組id。

[ -l 檔案 ] 為真 如果 檔案 存在 而且 是乙個 符號連線。

[ -n 檔案 ] 為真 如果 檔案 存在 而且 has been mod 如果ied since it was last read。

[ -s 檔案 ] 為真 如果 檔案 存在 而且 是乙個 socket。

[ 檔案1 -nt 檔案2 ] 為真 如果 檔案1 has been changed more recently than 檔案2, or 如果

檔案1 存在 而且

檔案2 does not。

[ 檔案1 -ot 檔案2 ] 為真 如果 檔案1 比 檔案2 舊, 或者 檔案2 存在而且 檔案1 不存在。

[ 檔案1 -ef 檔案2 ] 為真 如果 檔案1 而且 檔案2 refer to the same device 而且 inode

numbers。

[ -o 選項名 ] 為真 如果 shell 選項 "選項名" 開啟。

[ -z string ] 為真 如果 "string"的長度是零。

[ -n string ] 或者 [ string ] 為真 "string"的長度是非零值。

[ string1 == string2 ] 如果兩個字串相等為真。 "=" may be used instead of "==" for

strict posix compliance。

[ string1 != string2 ] 為真 如果 兩兩個字串不相等。

[ string1 < string2 ] 為真 如果 "string1" sorts before "string2" lexicographically in the

current locale。

[ string1 > string2 ] 為真 如果 "string1" sorts after "string2" lexicographically in the

current locale。

[ arg1 op arg2 ]

"op" 是 -eq, -ne, -lt, -le, -gt or -ge 其中乙個。 these arithmetic binary operators

return 為真 如果 "arg1" is equal to, not equal to, less than, less than or equal to, greater

than, or greater than or equal to "arg2", respectively。 "arg1" 而且 "arg2" are

integers。

表示式可以藉以下操作符組合起來, listed in decreasing order of precedence:

操作符效果

[ ! expr ] 如果expr 為假則為真。

[ ( expr ) ] 返回expr 的值。 這樣可以用來忽略正常的操作符優先順序。

[ 表示式1 -a 表示式2 ] 如果表示式1 而且表示式2 同時為真則為真 。

[ 表示式1 -o 表示式2 ] 如果表示式1 或者表示式2 其中之一為真則為真。

-eq:等於則為真

-ne:不等於則為真

-gt:大於則為真

-ge:大於等於則為真

-lt:小於則為真

-le:小於等於則為真

=:等於則為真

!=:不相等則為真

-z字串:字串長度偽則為真

-n字串:字串長度不偽則為真

-e檔名:如果檔案存在則為真

-r檔名:如果檔案存在且可讀則為真

-w檔名:如果檔案存在且可寫則為真

-x檔名:如果檔案存在且可執行則為真

-s檔名:如果檔案存在且至少有乙個字元則為真

-d檔名:如果檔案存在且為目錄則為真

-f檔名:如果檔案存在且為普通檔案則為真

-c檔名:如果檔案存在且為字元型特殊檔案則為真

-b檔名:如果檔案存在且為塊特殊檔案則為真

另外,linux還提供了與(「!」)、或(「-o)、非(「-a」)三個邏輯操作符用於將測試條件連線起來,其優先順序為:「!」最高,「-a」次之,「-o」最低。

shell 命令 判斷檔案

shell 命令 if d filename 判斷檔案 a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file...

shell 對檔案判斷

shell if判斷 a 檔案 如果檔案存在為真。b 檔案 如果 檔案 存在 而且 是乙個 塊 特殊 檔案為真。c 檔案 為真 如果 檔案 存在 而且 是乙個 字 特殊 檔案。d 檔案 為真 如果 檔案 存在 而且 是乙個 目錄。e 檔案 為真 如果 檔案 存在。f 檔案 為真 如果 檔案 存在 而...

shell判斷檔案是否存在

1.shell判斷檔案,目錄是否存在或者具有許可權 6.7.這裡的 x 引數判斷 mypath是否存在並且是否具有可執行許可權 8.if x mypath then 9.mkdir mypath 10.fi 11.12.這裡的 d 引數判斷 mypath是否存在 13.if d mypath the...