逻辑判断-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判断