Shell If 條件判斷

2021-09-24 23:39:51 字數 2284 閱讀 8781

一、if的基本語法:

if [ command ];then

符合該條件執行的語句

elif [ command ];then

符合該條件執行的語句

else

符合該條件執行的語句

fi

二、檔案/資料夾(目錄)判斷

[ -b file ] 如果 file 存在且是乙個塊特殊檔案則為真。

[ -c file ] 如果 file 存在且是乙個字特殊檔案則為真。

[ -d dir ] 如果 file 存在且是乙個目錄則為真。

[ -e file ] 如果 file 存在則為真。

[ -f file ] 如果 file 存在且是乙個普通檔案則為真。

[ -g file ] 如果 file 存在且已經設定了sgid則為真。

[ -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存在且是可寫的則為真。

[ -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 指向相同的裝置和節點號則為真。

三、字串判斷

[ -z string ] 如果string的長度為零則為真 ,即判斷是否為空,空即是真;

[ -n string ] 如果string的長度非零則為真 ,即判斷是否為非空,非空即是真;

[ string1 = string2 ] 如果兩個字串相同則為真 ;

[ string1 != string2 ] 如果字串不相同則為真 ;

[ string1 ]  如果字串不為空則為真,與-n類似

四、數值判斷

int1 -eq int2           int1和int2兩數相等為真 ,=

int1 -ne int2 int1和int2兩數不等為真 ,<>

int1 -gt int2 int1大於int1為真 ,>

int1 -ge int2 int1大於等於int2為真,>=

int1 -lt int2 int1小於int2為真 ,<

int1 -le int2 int1小於等於int2為真,<=

五、複雜邏輯判斷

-a 與

-o 或

! 非exp1: 如果a>b且a

if (( a > b )) && (( a < c ))

或者if [[ $a > $b ]] && [[ $a < $c ]]

或者if [ $a -gt $b -a $a -lt $c ]

exp2:如果a>b或a

if (( a > b )) || (( a < c ))

或者if [[ $a > $b ]] || [[ $a < $c ]]

或者if [ $a -gt $b -o $a -lt $c ]

"||"和"&&"在shell裡可以用,也就是第乙個寫成if [ a>b && a

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語句就...

shell if命令 判斷條件整理

語法結構 一行 if 1x ip x then echo abc fi 多行 if 1x ab x then echo you had enter ab elif 1x cd x then echo you had enter cd else echo you had enter unexpecte...