shell if判斷常用參數

Grammar:

if 條件  # 條件爲真,則條件返回0,進入then語句, 如果條件是函數,那麼函數返回0則進入then語句

then 

command

else   # 或者 elif 條件

command

fi


Fast  IF example:

執行命令

[ $? != 0 ] && exit -1  #如果左邊的表達式爲真則執行右邊的語句


Tips:

1) 不支持整數變量直接if,必須:if [ i –ne 0 ]

2) 支持字符串變量直接if,if [ str ] 如果字符串非0

3) 對字符串變量判定時,必須加引號,  if [ "$test" = "xxx" ]


Category:

[ -a FILE ] 如果 FILE 存在則爲真。

[ -b FILE ] 如果 FILE 存在且是一個塊特殊文件則爲真, 比如: [ -b /dev/sda ] && echo "sda is a block device"

[ -c FILE ] 如果 FILE 存在且是一個字特殊文件則爲真。

[ -d FILE ] 如果 FILE 存在且是一個目錄則爲真。

[ -e FILE ] 如果 FILE 存在則爲真。

[ -f FILE ] 如果 FILE 存在且是一個普通文件則爲真。

[ -g FILE ] 如果 FILE 存在且已經設置了SGID則爲真。

[ -u FILE ] 如果 FILE 存在且設置了SUID (set user ID)則爲真。

[ -h FILE ]如果 FILE 存在且是一個符號連接則爲真。

[ -L FILE ] 如果 FILE 存在且是一個符號連接則爲真。

[ -k FILE ] 如果 FILE 存在且已經設置了粘制位則爲真。

[ -p FILE ] 如果 FILE 存在且是一個名字管道(F如果O)則爲真。

[ -r FILE ] 如果 FILE 存在且是可讀的則爲真。

[ -s FILE ]如果 FILE 存在且大小不爲0則爲真。

[ -t FD ]  如果文件描述符 FD 打開且指向一個終端則爲真。

[ -w FILE ] 如果 FILE 如果 FILE 存在且是可寫的則爲真。

[ -x FILE ]如果 FILE 存在且是可執行的則爲真。

[ -O FILE ] 如果 FILE 存在且屬有效用戶ID則爲真。

[ -G FILE ] 如果 FILE 存在且屬有效用戶組則爲真。

[ -S FILE ] 如果 FILE 存在且是一個套接字則爲真。

[ -o OPTIONNAME ] 如果 shell選項 “OPTIONNAME” 開啓則爲真。

[ -z "STRING" ] STRING 的長度爲零則爲真。

[ "x$str1" = "x" ] str1的長度爲零則爲真

[ -n "STRING" ] or [ "STRING" ] "STRING" 的長度爲非零 non-zero則爲真。

[ "STRING1" = "STRING2" ] or [[ "STRING1" == "STRING2"]] 如果2個字符串相同,則爲真。

[ "STRING1" != "STRING2" ]如果字符串不相等則爲真。

[ "STRING1" < "STRING2" ]如果 “STRING1” 字典排序比 “STRING2” 小,則爲真。

[ ARG1 OP ARG2 ] “OP” 是 -eq(相等), -ne(不相等), -lt(小於), -le(小於等於), -gt(大於) -ge(大於等於) 之一. 比如[ 1 -lt 2 ] 爲真

[ EXPR1 -a EXPR2 ]如果 EXPR1 and EXPR2 全真則爲真。

[ EXPR1 -o EXPR2 ]如果 EXPR1 或者 EXPR2 爲真則爲真。


發佈了36 篇原創文章 · 獲贊 12 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章