shell常用判斷條件if

2022-07-18 07:51:16 字數 3424 閱讀 7839

-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.sh 

success

[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...