linux shell if else 語句判斷與參數
Path="/Path"
File="/Path/file.log"
# 這裏的-x 參數判斷$myPath是否存在而且是否具備可執行權限
if [ ! -x "$Path"]; then
mkdir "$Path"
fi
# 這裏的-d 參數判斷$myPath是否存在
if [ ! -d "$Path"]; then
mkdir "$Path"
fi
# 這裏的-f參數判斷$File是否存在
if [ ! -f "$File" ]; then
touch "$File"
fi
# 其餘參數還有-n,-n是判斷一個變量是不是否有值
if [ ! -n "$var" ]; then
echo "$var is empty"
exit 0
fi
# 兩個變量判斷是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
-a
文件存在
-b
文件存在而且是塊特殊文件。
-c
文件存在,是一個字符特殊文件。
-d
文件存在而且是一個目錄。
-e
文件存在(與-a相同)。
-f
文件存在且是常規文件。
-g
文件存在並設置了setgid(2)位。
-G
文件存在且與此進程具備相同的組ID。
-k
文件存在並設置了粘滯位。
-L
文件存在而且是符號連接。
-n
字符串長度不爲零。
-o
已設置命名選項。
-O
文件存在並由此進程的用戶標識擁有。
-p
文件存在,是先進先出(FIFO)特殊文件或命名管道。
-r
文件存在且可由當前進程讀取。
-s
文件存在且大小大於零。
-S
文件存在且是一個套接字。
-t
文件描述符號fildes已打開並與終端設備相關聯。
-u
文件存在並設置了setuid(2)位。
-w
文件存在且可由當前進程寫入。
-x
文件存在且可由當前進程執行。
-z
字符串長度爲零。
-nt
判斷file1是否比file2新 [ "/data/file1" -nt "/data/file2"]
-ot
判斷file1是否比file2舊 [ "/data/file1" -ot "/data/file2"]