逻辑判断 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] 这个判断,[] 方括号中不能使用 <,>,==,!=,>=,<= 这些符号;
- ;;
- *)
- ;;
- esac
- #!/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 判断并输出结果
来源: http://www.bubuko.com/infodetail-2567488.html