Shell腳本中對字符串、數字、文件與複雜邏輯判斷的使用

一、字符串的比較判斷mysql

=:第一個字符串與第二個字符串相同。
!=:第一個字符串與第二個字符串不相同,其中 「 !」表示取反。
-z:檢查字符串是否爲空,對於未定義或賦予空值的變量將是爲空串
-n:檢查字符串的長度,當串的長度大於0時爲真(串非空)

二、數字的判斷sql

-eq:第一個數等於(Equal)第二個數;
-ne:第一個數不等於(Not Equal)第二個數;
-gt:第一個數大於(Greater Than)第二個數;
-lt:第一個數小於(Lesser Than)第二個數;
-le:第一個數小於或等於(Lesser or Equal)第二個數;
-ge:第一個數大於或等於(Greater or Equal)第二個數;

三、文件的判斷markdown

-d:測試是否爲目錄(Directory);
-e:測試文件或目錄是否存在(Exist);
-f:測試是否爲文件(File);
-r:測試當前用戶是否有權限讀取(Read);
-w:測試當前用戶是否有權限寫入(Write);
-x:測試是否設置有可執行(Excute)權限;
-c:測試文件是否爲字符特殊文件 
-b:測試文件是否爲塊特殊文件 
-s:測試文件大小是否爲非0 
-t:測試當文件描述符(默認爲1)指定的設備是否爲終端

四、複雜邏輯判斷
!:表示「不」,只有當條件不成立時,整個測試命令返回的值才爲0,即結果成立;
&&:表示「並且」,只有當先後兩個條件都成立時,整個測試命令的返回值才爲0,即結果成立,使用test命令測試時能夠使用「-a」代替;
||:表示「或者」,只要先後兩個條件有一個成立,整個測試命令返回的值即爲0,即結果成立。使用test命令測試時能夠使用「-o」代替;
好比:oracle

if [ $USER = "oracle" ] || [ $USER = "mysql" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

備註:對文件的判斷所使用到的相關參數整理ide

[ -a FILENAME ]  若是 FILENAME 存在則爲真。  
[ -b FILENAME ]  若是 FILENAME 存在且是一個塊特殊文件則爲真。  
[ -c FILENAME ]  若是 FILENAME 存在且是一個字特殊文件則爲真。  
[ -d FILENAME ]  若是 FILENAME 存在且是一個目錄則爲真。  
[ -e FILENAME ]  若是 FILENAME 存在則爲真。  
[ -f FILENAME ]  若是 FILENAME 存在且是一個普通文件則爲真。  
[ -g FILENAME ] 若是 FILENAME 存在且已經設置了SGID則爲真。 [ -h FILENAME ]  若是 FILENAME 存在且是一個符號鏈接則爲真。  
[ -k FILENAME ]  若是 FILENAME 存在且已經設置了粘制位則爲真。  
[ -p FILENAME ]  若是 FILENAME 存在且是一個名字管道(F若是O)則爲真。  
[ -r FILENAME ]  若是 FILENAME 存在且是可讀的則爲真。  
[ -s FILENAME ]  若是 FILENAME 存在且大小不爲0則爲真。  
[ -t FD ]  若是文件描述符 FD 打開且指向一個終端則爲真。  
[ -u FILENAME ]  若是 FILENAME 存在且設置了SUID (set user ID)則爲真。  
[ -w FILENAME ]  若是 FILENAME 若是 FILENAME 存在且是可寫的則爲真。  
[ -x FILENAME ]  若是 FILENAME 存在且是可執行的則爲真。  
[ -O FILENAME ]  若是 FILENAME 存在且屬有效用戶ID則爲真。  
[ -G FILENAME ]  若是 FILENAME 存在且屬有效用戶組則爲真。  
[ -L FILENAME ]  若是 FILENAME 存在且是一個符號鏈接則爲真。  
[ -N FILENAME ]  若是 FILENAME 存在 and has been mod若是ied since it was last read則爲真。  
[ -S FILENAME ]  若是 FILENAME 存在且是一個套接字則爲真。  
[ FILENAME1 -nt FILENAME2 ]  若是 FILENAME1 has been changed more recently than FILENAME2, or 若是 FILENAME1 exists and FILENAME2 does not則爲真。  
[ FILENAME1 -ot FILENAME2 ]  若是 FILENAME1 比 FILENAME2 要老, 或者 FILENAME2 存在且 FILENAME1 不存在則爲真。  
[ FILENAME1 -ef FILENAME2 ]  若是 FILENAME1 和 FILENAME2 指向相同的設備和節點號則爲真。
相關文章
相關標籤/搜索