逻辑判断-if语句/文件目录属性判断/case判断

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逻辑判断-if语句/文件目录属性判断/case判断相关的知识,希望对你有一定的参考价值。

逻辑判断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判断的主要内容,如果未能解决你的问题,请参考以下文章

六十八shell脚本中的逻辑判断文件目录属性判断if特殊用法case判断

shell脚本中的逻辑判断文件目录属性判断if特殊用法case判断

20.5shell脚本中的逻辑判断20.6文件目录属性判断20.7-9if特殊用法 case判断

Shell脚本中的逻辑判断文件目录属性判断if的特殊用法case判断

Shell脚本中的逻辑判断文件目录属性判断if特殊用法 case判断

69.shell脚本中的逻辑判断文件目录属性判断if特殊用法case判断