邏輯判斷-if語句/文件目錄屬性判斷/case判斷
阿新 • • 發佈:2018-04-19
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判斷