2010年8月10日 星期二

判斷式

# -z 為判斷是否為空值   若$1為空值  就結束程式並傳回值為99
[ -z $1 ] && echo "ERROR:不得為空值" && exit 99


# ==為等於(若一個=是指定) 如果$1等於/則成立
[ $1 == "/" ] && echo "ERROR:不能為根目錄" && exit 99



# 檢查 $fn 是否為數字  
s=$(echo $fn | tr -d 0-9)
# -n為判斷是否有內容 若$s有內容則成立
[ -n "$s" ] && echo "$1 不是數字" && exit 1


#用回傳值判斷 ~/aaa 目錄存不存在
$ test -e ./aaa | echo $?
1    (1 代表不存在 
$ mkdir bin
$ test -e ./aaa | echo $?
0    (0 代表存在 
test -e ./aaa && echo "true" || echo "false"

&&=and
||=or


-z 無內容的條件才成立$ [ -z $HOME ] ; echo $?
1  (因為有內容不成立 所以回傳為1
-n 有內容的條件才成立$ [ -n $HOME ] ; echo $?
0  (因為有內容 成立 所以回傳為0
-e 判斷目錄存不存在$ [ -e ./aaa ] ; echo $?
0  (因為存在所以回傳值為0


例1.檢查kernel是否為2.6版
cks=$(uname -r)  (將完整版本代號丟到cks變數中)
ck=${cks:0:3}    (將版本代號作處理,從0開始取3個字)
#判斷ck取出來的字是否為2.6 , 若成立顯示is2.6 不成立 顯示not 2.6
[ $ck == "2.6" ] && echo is 2.6 || echo not 2.6

例2.檢查是否為root帳號執行程式 (若不是root就跳出,可以給程式執行權限)w=$(whoami)  (將操作使用者名稱丟到變數w中

#判斷變數w是否為root 分別輸出結果及指定傳回值
[ $w == "root" ] && echo root ok! && exit 0 || echo not root && exit 1

沒有留言:

張貼留言