1. 程式人生 > >邏輯判斷-if語句/文件目錄屬性判斷/case判斷

邏輯判斷-if語句/文件目錄屬性判斷/case判斷

if語句 case判斷 if判斷 邏輯判斷

邏輯判斷IF

-gt :大於
-lt :小於
-eq :等於
-ne :不等於
-ge :大於或等於
-le :小於或等於

格式1:

if 條件 ;then 語句; fi

a=5
if [ $a -gt 3 ]; then echo ok; fi;            //一行表示出來,註意條件中間都要有空格,有空格;分號用來隔開;

或者

a=5
if [ $a -gt 3 ]
then
   echo ok
fi
意思:定義a=5,判斷a大於3的時候,就輸出ok;

格式2:

if 條件 ;then 語句1 ; else 語句2;fi
語句1為滿足條件的語句,語句2為不滿足條件的語句;


a=1
if [ $a -gt 3 ];then echo ok;else echo nook;fi;
輸出:nook

或者


#!/bin/bash
a=1
if [ $a -gt 3 ]
then
    echo ok
else
    echo nook
fi

格式3:

if 條件1;then 語句1;elif 條件2;then 語句2;else 語句3;fi
當條件1不滿足時,就行條件2判斷,條件2不滿足就執行語句3;


#!/bin/bash
a=2
if [ $a -lt 1 ];then echo "a<1";elif [ $a -lt 3 ];then echo "a<3 && a>1";else echo "a>3";fi;

輸出:a<3 && a>1
這語句意思是:判斷a小於1,就輸出a<1;如果a大於1,就進行第二個判斷a小於3,如果大於1,小於3,就輸出a<3 && a>1;兩個條件都不滿足就輸出a>3


#!/bin/bash
a=2
if [ $a -lt 1 ]
then
    echo "a<1"
elif [ $a -lt 3 ]
then
    echo "a>1 && a<3"
else
    echo "a>3"
fi

變量與變量判斷:

判斷變量a與b哪個比較大


a=1
b=2
if [ $a -lt $b ];then echo "a<b";else echo "a>b";fi;
輸出:a<b

多條件判斷:

&&:表示and,並且
|| :表示or,或者


a=1
b=2
if [ $a -lt 5 ] && [ $b -lt 5 ];then echo "a<5 && b<5";fi;
輸出:a<5 && b<5

文件目錄屬性判斷

[ -f file ]:判斷是否是普通文件,且存在
[ -d file ]:判斷是否是目錄文件夾,且存在
[ -e file ]:判斷文件或目錄是否存在
[ -r file ]:判斷文件是否可讀,判斷r
[ -w file ]:判斷文件是否可寫,判斷w
[ -x file ]:判斷文件是否可執行,判斷x


#!/bin/bash
#判斷是否存在/tmp/abclinux文件&&是否是普通文件
f="/tmp/abclinux"
if [ -f $f ]
then
    echo $f exist
else
    touch $f
fi

#!/bin/bash
#判斷f是否是目錄&&存在;不是目錄&&不存在就創建,是目錄&&存在就提示存在,存在&&不是目錄就會告錯
f="/tmp/abc111linux"
if [ -d $f ]
then
    echo $f exist
else
    mkdir $f
fi

#!/bin/bash
#判斷這個文件或者目錄是否存在
f="/tmp/abclinux"
if [ -e $f ]
then
    echo $f is yes
else
    echo $f is no
fi

#!/bin/bash
判斷f是否是普通文件&&存在,如果存在&&是普通文件,就輸出掉它;
f="/tmp/abclinux"
[ -f /tmp/abclinux ] && rm -f $f

特殊用法

if [ -z "$a" ]:判斷變量a的值為空會怎麽樣;
if [ -n "$a" ]:當變量a的值不為空會怎麽樣;
if grep -q ‘123‘ 1.txt:表示1.txt中含有123會這麽樣;
if [ ! -e file ]:表示文件不存在會怎麽樣;
if (($a<1)):等同於if [ $a -lt 1]這個判斷,[]方括號中不能使用<,>,==,!=,>=,<=這些符號;


case判斷

格式:


case  變量名 in
               值1)
                   語句1
                    ;;
                值2)
                    語句2
                    ;;
                *)
                    語句N
                    ;;
esac
註意:最後一個值為*,表示不匹配上面所有的值,就執行語句N;

舉例:

#!/bin/bash
read -p "Please input a number:" n
#請輸入一個數字,賦予變量n
if [ -z "$n" ]
then
    echo "please input a number."
    exit 1
fi
#判斷輸入的值是否為空

n1=`echo $n|sed ‘s/[0-9]//g‘`
if [ -n "$n1" ]
then
    echo "please inputa number."
    exit 1
fi
#判斷輸入的是否為數字

if [ $n -lt 60 ] && [ $n -ge 0 ]
then
    tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
    tag=2
elif [ $n -ge 80 ] && [ $n -lt 90 ]
then
    tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
    tag=4
else
    tag=0
fi
#判斷分數,賦予tag檔次,0為其他,1為不及格,2為及格,3為良好,4為優秀

case $tag in
    1)
    echo "not ok,bu-ji-ge"
    ;;
    2)
    echo "ok,ji-ge"
    ;;
    3)
    echo "ook,liang-hao"
    ;;
    4)
    echo "oook,you-xiu"
    ;;
    *)
    echo "the number range is 0-100"
    ;;
esac
#esac判斷並輸出結果

邏輯判斷-if語句/文件目錄屬性判斷/case判斷