linux if命令格式及參數

 linux if命令格式:

      if list then 
          do something here 
      elif list then 
          do another thing here 
      else 
         do something else here 
      fi    


例子:
#!/bin/sh
SYSTEM=`uname -s`    #獲取操作系統類型,我本地是linux
if [ $SYSTEM = "Linux" ] ; then     #如果是linux的話打印linux字符串
echo "Linux" 
elif [ $SYSTEM = "FreeBSD" ] ; then   
echo "FreeBSD" 
elif [ $SYSTEM = "Solaris" ] ; then 
echo "Solaris" 
else 
echo "What?" 
fi     #ifend
基本上和其他腳本語言一樣。沒有太大區別。不過值得注意的是。[]裏面的條件判斷。


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爲真


shell if 命令參數說明

-b    當file存在並且是塊文件時返回真
-c    當file存在並且是字符文件時返回真
-d    當pathname存在並且是一個目錄時返回真
-e    當pathname指定的文件或目錄存在時返回真
-f     當file存在並且是正規文件時返回真
-g     當由pathname指定的文件或目錄存在並且設置了SGID位時返回爲真
-h     當file存在並且是符號鏈接文件時返回真,該選項在一些老系統上無效
-k     當由pathname指定的文件或目錄存在並且設置了“粘滯”位時返回真
-p     當file存在並且是命令管道時返回爲真
-r     當由pathname指定的文件或目錄存在並且可讀時返回爲真
-s     當file存在文件大小大於0時返回真
-u     當由pathname指定的文件或目錄存在並且設置了SUID位時返回真
-w    當由pathname指定的文件或目錄存在並且可執行時返回真。一個目錄爲了它的內容被訪問必然是可執行的。
-o     當由pathname指定的文件或目錄存在並且被子當前進程的有效用戶ID所指定的用戶擁有時返回真。

比較字符寫法:
-eq    等於
-ne    不等於
-gt     大於
-lt    小於
-le     小於等於
-ge    大於等於
-z    空串
* =    兩個字符相等
* !=   兩個字符不等
* -n   非空串

Primary 意義
-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 如果 FILE1FILE2 does not則爲真。 exists and
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.
表達式可以藉以下操作符組合起來,以降序列出:listed in decreasing order of precedence:
表 7.2. 組合表達式
操作 效果
[ ! EXPR ] 如果 EXPR 是false則爲真。
[ ( EXPR ) ] 返回 EXPR的值。這樣可以用來忽略正常的操作符優先級。
[ EXPR1 -a EXPR2 ] 如果 EXPR1 and EXPR2 全真則爲真。
[ EXPR1 -o EXPR2 ] 如果 EXPR1 或者 EXPR2 爲真則爲真。
[ (或作 test) 內建命令對條件表達式使用一系列基於參數數量的規則來求值。更多關於這個主題的信息可以在Bash文檔中查找。就像if 使用fi 來結束一樣,在條件列完之後必須用">"來結束。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章