-r file 使用者可讀為真
-w file 使用者可寫為真
-x file 使用者可執行為真
-f file 檔案為正規檔案為真
-d file 檔案為目錄為真
-c file 檔案為字元特殊檔案為真
-b file 檔案為塊特殊檔案為真
-s file 檔案大小非0時為真
-t file 當檔案描述符(預設為1)指定的裝置為終端時為真
判斷目錄是否存在,不存在建立目錄。
[root@test ~]# cat shell.sh#!/bin/sh
file_shell="/shell"
if [ ! -d "$file_shell" ];then
mkdir "$file_shell"
if [ $? -eq 0 ];then
echo "建立目錄$file_shell成功!"
fifi[root@test ~]# sh shell.sh
建立目錄/shell成功!
[root@test /]# ls -lt
總用量 94
drwxr-xr-x. 7 root root 0 5月 5 2017 selinux
drwxr-xr-x. 13 root root 0 5月 5 2017 sys
dr-xr-xr-x. 98 root root 0 5月 5 2017 proc
drwxr-xr-x. 2 root root 4096 5月 5 09:59 shell
dr-xr-x---. 3 root root 4096 5月 5 09:56 root
drwxr-xr-x. 17 root root 3680 5月 5 09:41 dev
drwxr-xr-x. 72 root root 4096 5月 5 09:41 etc
判斷根目錄下的shell目錄是否有執行許可權,沒有則賦予執行許可權。
[root@test ~]# cat shell.sh#!/bin/sh
file_shell="/root/shell"
if [ ! -x "$file_shell" ]; then
echo "$file_shell沒有執行許可權!"
chmod +x "$file_shell"
if [ $? -eq 0 ];then
echo "給$file_shell新增執行許可權成功!"
fifi[root@test ~]# ls -lh /shell/
總用量 4.0k
-rw-r--r--. 1 root root 71 5月 5 10:08 test.sh
[root@test ~]#
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為真
str1 = str2 當兩個串有相同內容、長度時為真
str1 != str2 當串str1和str2不等時為真
-n str1 當串的長度大於0時為真(串非空)
-z str1 當串的長度為0時為真(空串)
str1 當串str1為非空時為真
-a 與
-o 或
! 非
變數a等於aa且變數b等於bb 或者 變數c等於cc且變數d等於dd 這樣的條件成立的話,輸出success
[root@test ~]# sh shell.shsuccess
[root@test ~]# cat shell.sh
#!/bin/shell
a="aa"
b="bb"
c="cc"
d="dd"
if [ $a = "aa" -a $b = "bb" ] || [$c = "cc" -a $d = "dd" ];
then
echo "success"
fi
[ -a file ] 如果 file 存在則為真。
[ -b file ] 如果 file 存在且是乙個塊檔案則返回為真。
[ -c file ] 如果 file 存在且是乙個字元檔案則返回為真。
[ -d file ] 如果 file 存在且是乙個目錄則返回為真。
[ -e file ] 如果 指定的檔案或目錄存在時返回為真。
[ -f file ] 如果 file 存在且是乙個普通檔案則返回為真。
[ -g file ] 如果 file 存在且設定了sgid則返回為真。
[ -h file ] 如果 file 存在且是乙個符號符號鏈結檔案則返回為真。(該選項在一些老系統上無效)
[ -k file ] 如果 file 存在且已經設定了冒險位則返回為真。
[ -p file ] 如果 file 存並且是命令管道時返回為真。
[ -r file ] 如果 file 存在且是可讀的則返回為真。
[ -s file ] 如果 file 存在且大小非0時為真則返回為真。
[ -u file ] 如果 file 存在且設定了suid位時返回為真。
[ -w 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 比 file2 新, 或者 file1 存在但是 file2 不存在則返回為真。
[ file1 -ot file2 ] 如果 file1 比 file2 老, 或者 file2 存在但是 file1 不存在則返回為真。
[ file1 -ef file2 ] 如果 file1 和 file2 指向相同的裝置和節點號則返回為真。
shell常用的判斷條件
1 判斷資料夾是否存在 if d home q www then echo true else echo false fi 系統內存在資料夾 home q www 2 判斷檔案是否存在 if e etc passwd then echo true else echo false fi if f et...
shell中常用檔案條件判斷
在shell指令碼經常碰到if的條件判斷語句,中括號中會出現 f d等用於判斷一些變數和檔案,例如 if x tmp fh before preconfig.sh x在此處就是用於判斷 fh before preconfig.sh是否可執行 現將shell中常見的條件判斷符總結歸納如下 常用檔案條件...
Shell條件判斷
b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是乙個規則檔案,則為真 g file 若檔案存在且設定了sgid位的值,則為真 h fi...