shell指令碼條件判斷if

2020-08-10 14:19:46

轉至https://www.cnblogs.com/new-journey/p/11017659.html

[ -a FILE ] 如果 FILE 存在則爲真。
[ -b FILE ] 如果 FILE 存在且是一個塊特殊檔案則爲真。
[ -c FILE ] 如果 FILE 存在且是一個字特殊檔案則爲真。
[ -d FILE ] 如果 FILE 存在且是一個目錄則爲真。
[ -e FILE ] 如果 FILE 存在則爲真。
[ -f FILE ] 如果 FILE 存在且是一個普通檔案則爲真。
[ -g FILE ] 如果 FILE 存在且已經設定了SGID則爲真。 [ -h FILE ] 如果 FILE 存在且是一個符號連線則爲真。
[ -k FILE ] 如果 FILE 存在且已經設定了粘制位則爲真。
[ -p FILE ] 如果 FILE 存在且是一個名字管道(F如果O)則爲真。
[ -r FILE ] 如果 FILE 存在且是可讀的則爲真。
[ -s FILE ] 如果 FILE 存在且大小不爲0則爲真。
[ -t FD ] 如果檔案描述符 FD 開啓且指向一個終端則爲真。
[ -u FILE ] 如果 FILE 存在且設定了SUID (set user ID)則爲真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可寫的則爲真。
[ -x FILE ] 如果 FILE 存在且是可執行的則爲真。
[ -O FILE ] 如果 FILE 存在且屬有效使用者ID則爲真。
[ -G FILE ] 如果 FILE 存在且屬有效使用者組則爲真。
[ -L FILE ] 如果 FILE 存在且是一個符號連線則爲真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read則爲真。
[ -S FILE ] 如果 FILE 存在且是一個通訊端則爲真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not則爲真。
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則爲真。
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的裝置和節點號則爲真。
[ -o OPTIONNAME ] 如果 shell選項 「OPTIONNAME」 開啓則爲真。
[ -z STRING ] 「STRING」 的長度爲零則爲真。
[ -n STRING ] or [ STRING ] 「STRING」 的長度爲非零 non-zero則爲真。
[ STRING1 == STRING2 ] 如果2個字串相同。 「=」 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」 is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if 「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」 and 「ARG2」 are integers.

=====================================================================

基本上和其他指令碼語言一樣。沒有太大區別。不過值得注意的是。[]裏面的條件判斷。

1、字串判斷

str1 = str2      當兩個串有相同內容、長度時爲真
str1 != str2      當串str1和str2不等時爲真
-n str1        當串的長度大於0時爲真(串非空)
-z str1        當串的長度爲0時爲真(空串)
str1         當串str1爲非空時爲真

2、數位的判斷

int1 -eq int2    兩數相等爲真
int1 -ne int2    兩數不等爲真
int1 -gt int2    int1大於int2爲真
int1 -ge int2    int1大於等於int2爲真
int1 -lt int2    int1小於int2爲真
int1 -le int2    int1小於等於int2爲真

3、檔案的判斷

-r file     使用者可讀爲真
-w file     使用者可寫爲真
-x file     使用者可執行爲真
-f file     檔案爲正規檔案爲真
-d file     檔案爲目錄爲真
-c file     檔案爲字元特殊檔案爲真
-b file     檔案爲塊特殊檔案爲真
-s file     檔案大小非0時爲真
-t file     當檔案描述符(預設爲1)指定的裝置爲終端時爲真

4、複雜邏輯判斷

-a         與
-o        或
!        非