shell脚本中的if语句判断

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

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

if(表达式)
      语句1
else
      语句2
fi

if语句shell脚本编程案例如下。

(1)比较两个整数大小,代码如下:

#!/bin/bash
NUM=100
if (($NUM>4)); then
        echo "The Num $NUM more than 4."
else 
        echo "The Num $NUM 1ess than 4."
fi

(2)判断系统目录是否存在,代码如下:

#!/bin/bash
#  DIR or Files
if [ ! -d /data/20140515 -a ! -d /tmp/2017/]; then 
mkdir -p /data/20140515

if常见的判断逻辑运算符详解如下:

-f:判断文件是否存在,例如if[-f filename]。
-d:判断目录是否存在,例如if[-d dir]。
-eq:等于,应用于整型比较,即equal。
-ne:不等于,应用于整型比较,即not equalal
-1t:小于,应用于整型比较,即letter。-gt:大于,应用于整型比较,即greater。
-1e:小于或等于,应用于整型比较。-ge:大于或等于,应用于整型比较。
-a:双方都成立(and),用法为逻辑表达式-a逻辑表达式。
-0:单方成立(or),用法为逻辑表达式-o逻辑表达式。
-Z:空字符串。
1:单方成立。
&&:双方都成立表达式。

(3)if多个条件测试分数判断,代码如下:

#!/bin/bash
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-1t 60 ]]; then 
   echo "no pass!"
fi

if判断括号区别

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

  • ():用于多个命令组、命令替换、初始化数组。
  • (()):整数扩展、运算符、重定义变量值,算术运算比较。
  • []:bash内部命令,“[”与test是等同的,正则字符范围、引用数组元素编号,不支持“+”、“一”、“*”、“/”数学运算符,逻辑测试使用- a、-0。
  • [[]]:bash程序语言的关键字,不是一个命令,[]结构比]结构更加通用,不支持“+”、“一”、“*”、“/”数学运算符,逻辑测试使用 &&、l。
  • {}:主要用于命令集合或者范围,例如mkdir-p/data/201{7,8}/。

发表评论

后才能评论