[Shell]if 常用判斷條件,shellif判斷條件
IF 判斷
之前也寫過簡單的shell指令碼,也不是轉職營運,和系統相關的工作比較少,所以不怎麼熟練。
最近由於系統總是出現各種亂七八糟的問題,也沒有人來協助,只好自己寫shell指令碼了,都是些基礎的指令碼,但由於shell的文法和通常的進階語言有些不一樣,所以還是要系統的看下常用的部分。 if語句就是很重要的一個。
這種文章很多,只是拿來主義,如果有心得體會也會加上,小計下以後備查。
基本結構: if語句塊需要使用if結束
if conditionthen statementselif condition then statementselse statementsfi
tips:寫法上需要注意的是
if後面的判斷條件 方括弧和之間的判斷語句左右各要有一個空格(錯了好幾次了)
#####判斷字元是否相等
#!/bin/bashsystem=`uname -s`if [ $system = "Linux" ] #方括弧內部兩邊有空格,等號兩邊也需要空格then echo "Linux"else echo "Other system"fi
常用類型的判斷寫法(類比字串)
1 字串判斷str1 = str2 當兩個串有相同內容、長度時為真str1 != str2 當串str1和str2不等時為真-n str1 當串的長度大於0時為真(串非空)-z str1 當串的長度為0時為真(空串)str1 當串str1為非空時為真2 數位判斷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為真3 檔案的判斷-r file 使用者可讀為真-w file 使用者可寫為真-x file 使用者可執行為真-f file 檔案為正規檔案為真-d file 檔案為目錄為真-c file 檔案為字元特殊檔案為真-b file 檔案為塊特殊檔案為真-s file 檔案大小非0時為真-t file 當檔案描述符(預設為1)指定的裝置為終端時為真4 複雜邏輯判斷-a 與-o 或! 非
tips:
* -eq -ne -lt -nt只能用於整數,不適用於字串,字串等於用賦值號=
* =放在別的地方是賦值,放在if [ ] 裡就是字串等於,shell裡面沒有==的,那是c語言的等於
* 整數條件運算式,大於,小於,shell裡沒有> 和< ,會被當作角括弧,只有-ge,-gt,-le,lt
[參考文章](http://rfyiamcool.blog.51cto.com/1030776/738624)
本文出自 “orangleliu筆記本” 部落格,請務必保留此出處 http://blog.csdn.net/orangleliu/article/details/38458889
shell指令碼 if判斷條件問題
你既然已經知道這個檔案叫什麼就沒有意義了。。。。理論上應該用find命令或者你知道這個目錄在系統中的什麼位置。
比如
ls | grep aaa
a=`echo $?`
b=`ls | grep aaa`
if [ $a -eq 0 ]
then
tar zcvf Name.tar.gz $b
else
echo 'Don't have this file.'
fi
linux shell編程 if判斷語句的判定條件
#!/bin/bash
a=$(grep '>' file | wc -l )
if [ $a = 1 ];then
要執行的語句
fi