shell if條件中判斷檔案或字元操作

2021-10-20 23:52:46 字數 3628 閱讀 2580

[ -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 存在且是乙個符號連線則為真。    

[ -n file ]  如果 file 存在 and has been mod如果ied since it was last read則為真。    

[ -s file ]  如果 file 存在且是乙個套接字則為真。    

[ file1 -nt file2 ]  如果 file1 has been changed more recently than file2, or 如果 file1 exists and file2 does not則為真。    

[ file1 -ot file2 ]  如果 file1 比 file2 要老, 或者 file2 存在且 file1 不存在則為真。    

[ file1 -ef file2 ]  如果 file1 和 file2 指向相同的裝置和節點號則為真。    

[ -o optionname ]  如果 shell選項 "optionname" 開啟則為真。    

[ -z string ]  "string" 的長度為零則為真。    

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

[ string1 == string2 ]  如果2個字串相同。 "=" may be used instead of "==" for strict posix compliance則為真。    

[ string1 != string2 ]  如果字串不相等則為真。  

[ string1 < string2 ]  如果 "string1" sorts before "string2" lexicographically in the current locale則為真。    

[ string1 > string2 ]  如果 "string1" sorts after "string2" lexicographically in the current locale則為真。    

[ arg1 op arg2 ] "op" is one of -eq, -ne, -lt, -le, -gt or -ge. these arithmetic binary operators return true if "arg1" is equal to, not equal to, less than, less than or equal to, greater than

-e filename        如果 filename 存在,則為真            [ -e /var/log/syslog ]

-d filename       如果 filename 為目錄,則為真       [ -d /tmp/mydir ]

-f filename        如果 filename 為常規檔案,則為真 [ -f /usr/bin/grep ]

-l filename        如果 filename 為符號鏈結,則為真   [ -l /usr/bin/grep ]

-r filename          如果 filename 可讀,則為真              [ -r /var/log/syslog ]

-w filename        如果 filename 可寫,則為真            [ -w /var/mytmp.txt ]

-x filename         如果 filename 可執行,則為真           [ -l /usr/bin/grep ]

filename1 -nt filename2 如果 filename1 比 filename2 新,則為真 [ /tmp/install/etc/services -nt /etc/services ]

filename1 -ot filename2 如果 filename1 比 filename2 舊,則為真 [ /boot/bzimage -ot arch/i386/boot/bzimage ]

-z string               如果 string 長度為零,則為真          [ -z "$myvar" ]

-n string              如果 string 長度非零,則為真               [ -n "$myvar" ]

string1 = string2 如果 string1 與 string2 相同,則為真 [ "$myvar" = "one two three" ]

string1 != string2 如果 string1 與 string2 不同,則為真 [ "$myvar" != "one two three" ]

num1 -eq num2                 等於                            [ 3 -eq $mynum ]

num1 -ne num2                不等於                         [ 3 -ne $mynum ]

num1 -lt num2                    小於                            [ 3 -lt $mynum ]

num1 -le num2              小於或等於                       [ 3 -le $mynum ]

num1 -gt num2                    大於                            [ 3 -gt $mynum ]

num1 -ge num2               大於或等於                     [ 3 -ge $mynum ]

Shell If 條件判斷

一 if的基本語法 if command then 符合該條件執行的語句 elif command then 符合該條件執行的語句 else 符合該條件執行的語句 fi二 檔案 資料夾 目錄 判斷 b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個...

shell if判斷條件

a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file 存在且是乙個...

Shell if常用判斷條件

if 判斷 之前也寫過簡單的shell指令碼,也不是轉職運維,和系統相關的工作比較少,所以不怎麼熟練。最近由於系統總是出現各種亂七八糟的問題,也沒有人來協助,只好自己寫shell指令碼了,都是些基礎的指令碼,但由於shell的語法和通常的高階語言有些不一樣,所以還是要系統的看下常用的部分。if語句就...