傳統if 從句子——以條件表示式作為 if條件
if [ 條件表示式 ]
then
command
command
command
else
command
command
fi條件表示式
檔案表示式
if [ -f file ] 如果檔案存在
if [ -d ... ] 如果目錄存在
if [ -s file ] 如果檔案存在且非空
if [ -r file ] 如果檔案存在且可讀
if [ -w file ] 如果檔案存在且可寫
if [ -x file ] 如果檔案存在且可執行
整數變數表示式
if [ int1 -eq int2 ] 如果int1等於int2
if [ int1 -ne int2 ] 如果不等於
if [ int1 -ge int2 ] 如果》=
if [ int1 -gt int2 ] 如果》
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字串變數表示式
if [ $a = $b ] 如果string1等於string2
字串允許使用賦值號做等號
if [ $string1 != $string2 ] 如果string1不等於string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 為空
if [ $sting ] 如果string 非空,返回0 (和-n類似)
邏輯非 ! 條件表示式的相反
if [ ! 表示式 ]
if [ ! -d $num ] 如果不存在目錄$num
邏輯與 –a 條件表示式的並列
if [ 表示式1 –a 表示式2 ]
邏輯或 -o 條件表示式的或
if [ 表示式1 –o 表示式2 ]
邏輯表示式
表示式與前面的= != -d –f –x -ne -eq -lt等合用
邏輯符號就正常的接其他表示式,沒有任何括號( ),就是並列
if [ -z "$jhhome" -a -d $home/$num ]
注意邏輯與-a與邏輯或-o很容易和其他字串或檔案的運算符號搞混了
最常見的賦值形式,賦值前對=兩邊的變數都進行評測
左邊測變數是否為空,右邊測目錄(值)是否存在(值是否有效)
if test $num -eq 0 等價於 if [ $num –eq 0 ]
Shell條件判斷
b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是乙個規則檔案,則為真 g file 若檔案存在且設定了sgid位的值,則為真 h fi...
Shell條件判斷
1 字串判斷 str1 str2 當兩個串有相同內容 長度時為真 str1 str2 當串str1和str2不等時為真 n str1 當串的長度大於0時為真 串非空 z str1 當串的長度為0時為真 空串 str1 當串str1為非空時為真 2 數字的判斷 int1 eq int2 兩數相等為真 ...
Shell 條件判斷
條件判斷的結果為0表示真,為1表示假,正好與c語言的相反。用於比較的條件分為以下四種 條件判斷的格式分為以下兩種 字串比較 說明string 1 string 2 如果string 1和string 2兩個字串相等則返回真,否則返回假 string 1 string 2 如果string 1和str...