linux shell 腳本 常用的if判斷條件

工作中經常需要寫shell腳本來處理一些重複的東西,使用腳本自動編譯,使用腳本多機器傳輸文件。

因爲不是天天寫shell,只是用到的時候寫一個,再加上腳本中的if的判斷條件有點多,容易忘記,所以做個備忘錄,以備不時之需

先說一下 if 表達式的基本語法

if [ command ]; then
   符合該條件執行的語句
fi
if [ command ];then
   符合該條件執行的語句
elif [ command ];then
   符合該條件執行的語句
else
   符合該條件執行的語句
fi

注意:

  1. if 條件 要以 if 結束
  2. [] if語句中 和 表達式要注意空格
  3. thenfi 是分開的語句。如果要在同一行裏面輸入,則需要用分號將他們隔開
  4. 使用 -z 或者 -n 來檢查長度的時候,沒有定義的變量也爲0

下面是常用表達式

數字判斷

表達式 含義
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爲真

邏輯相關

表達式 含義
-a
-o
!

字符串相關

表達式 含義
STRING 當串str1爲非空時爲真
-z STRING “STRING” 的長度爲零則爲真
-n STRING “STRING” 的長度爲非零 non-zero則爲真
STRING1 == STRING2 如果2個字符串相同則爲真
STRING1 != STRING2 如果字符串不相等則爲

文件相關

表達式 含義
-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 存在且是一個符號連接則爲真
-S FILE 如果 FILE 存在且是一個套接字則爲真
FILE1 -ot FILE2 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則爲真
FILE1 -ef FILE2 如果 FILE1 和 FILE2 指向相同的設備和節點號則爲真
-o OPTIONNAME 如果 shell選項 “OPTIONNAME” 開啓則爲真
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章