#!/bin/bash
text=jack
if ?grep $text /etc/passwd
then
? ? ? ? echo ok
else
? ? ? ? echo "not exist"
fi
先查找是否有這個用戶,查到,輸出OK,沒查到,輸出不存在.
注意,then的下一行的前面,不是空格,而是tab.其實這里空格也行幔摸。只是為了好看,用TAB甲馋。
這里可以看出,if里面,只能是命令,命令返回0,才會執(zhí)行then里面的內(nèi)容
然后真實中,通常if中的內(nèi)容,并不是一個命令!那要怎么處理呢,比如就是比較一個大小,就要用到test比較,以下是test比較常用寫法
#!/bin/bash
a=5
b=10
if [ $a -gt $b ]
then
? ? ? ? echo "$a greater than $b"
else
? ? ? ? ?echo "$a smaller than $b"
fi
可以看出if 后面變成一個[] 而且注意,括號里面,前后都是有空格的!必須有空格,不然為錯
這里的 -gt 表示大于 ,對應(yīng)的 -lt 表示小于
這種寫法,也是最最常用的if的寫法
再比如,一個常用的 -d 來判斷文件路徑是否存在
#!/bin/bash
mkdir=/usr/watson
if [ -d $mkdir ]
then
? ? ? ? echo "文件存在"
else
? ? ? ? echo "文件不存在"
fi
以下為常用判斷
文件比較
-d 檢查是否存在养泡,并且是一個目錄
-e 檢查file是否存在
-f 檢查是否存在嗜湃,并且是一個文件
-r 檢查是否存在,并且可讀
-w澜掩、-x
file1 -nt file2 file1比file2新
file1 -ot file2 file1比file2舊
[ -f "somefile" ] :判斷是否是一個文件
[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執(zhí)行權(quán)限
[ -n "$var" ] :判斷$var變量是否有值,或者叫長度是否非0,類似java中的str判空
[ "$a" = "$b" ] :判斷$a和$b是否相等
-r file 用戶可讀為真
-w file 用戶可寫為真
-x file 用戶可執(zhí)行為真
-f file 文件為正規(guī)文件為真
-d file 文件為目錄為真
-c file 文件為字符特殊文件為真
-b file 文件為塊特殊文件為真
-s file 文件大小非0時為真
-t file 當(dāng)文件描述符(默認(rèn)為1)指定的設(shè)備為終端時為真
含條件選擇的shell腳本 對于不含變量的任務(wù)簡單shell腳本一般能勝任购披。但在執(zhí)行一些決策任務(wù)時,就需要包含if/then的條件判斷了肩榕。shell腳本編程支持此類運算刚陡,包括比較運算、判斷文件是否存在等株汉。
基本的if條件命令選項有: - eq —比較兩個參數(shù)是否相等(例如筐乳,if [ 2 –eq 5 ])
?-ne —比較兩個參數(shù)是否不相等
-lt —參數(shù)1是否小于參數(shù)2
-le —參數(shù)1是否小于等于參數(shù)2
-gt —參數(shù)1是否大于參數(shù)2
-ge —參數(shù)1是否大于等于參數(shù)2
還有一種,如果是比較復(fù)雜的數(shù)學(xué)表達(dá)式,可以用雙掛號形式
if(( a++ > 90 ))