shell脚本中的if条件语句判断

Linux Shell编程中,if、for、while、case等条件流程控制语句用的非常多,熟练掌握以上流程控制语句及语法的实验,对编写Shell脚本有非常大的益处。

If条件判断语句,通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断,if表达式如下:

if  (表达式) 
语句1
fi

If语句Shell脚本编程案例如下:

(1) 比较两个整数大小。

#!/bin/bash
#By author jfedu.net 2017
NUM=100
if (( $NUM > 4 )) ;then
echo “The Num $NUM more than 4.”
else
echo “The Num $NUM less   than 4.”
fi

(2)判断系统目录是否存在。

#!/bin/bash
#judge DIR or Files
#By author jfedu.net 2017
if [ ! -d /data/20140515 -a ! -d /tmp/2017/ ];then
mkdir -p /data/20140515
fi

If常见判断逻辑运算符详解:

-f                      判断文件是否存在 eg: if [ -f filename ];
-d 判断目录是否存在 eg: if [ -d dir     ];
-eq 等于,应用于整型比较 equal;
-ne 不等于,应用于整型比较 not equal;
-lt 小于,应用于整型比较 less than;
-gt 大于,应用于整型比较 greater than;
-le 小于或等于,应用于整型比较;
-ge 大于或等于,应用于整型比较;
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式;
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式;
-z 空字符串;
||     单方成立;
&&     双方都成立表达式。

(3) if多个条件测试分数判断。

#!/bin/bash
#By author jfedu.net 2017
scores=$1
if [[ $scores -eq 100 ]]; then
    echo "very good!";
elif [[ $scores -gt 85 ]]; then
    echo "good!";
elif [[ $scores -gt 60 ]]; then
    echo "pass!";
elif [[ $scores -lt 60 ]]; then
    echo "no pass!"
fi

If判断括号区别

在使用if语句时,经常会使用()、(())、[]、[[]]、{}等括号,如下为几种括号简单区别对比:

(  )
用于多个命令组、命令替换、初始化数组;

(( ))
整数扩展、运算符、重定义变量值,算术运算比较;

[]
bash内部命令,[与test是等同的,正则字符范围、引用数组元素编号,不支持+-/数学运算符,逻辑测试使用-a、-o。

[[ ]]
bash程序语言的关键字,不是一个命令,[[ ]]结构比[ ]结构更加通用,不支持+-/数学运算符,逻辑测试使用&&、||。

{}
主要用于命令集合或者范围,例如mkdir  -p  /data/201{7,8}/

发表评论

后才能评论