阅读(4134) (20)

Bash if语句

2020-06-17 13:59:12 更新

if语句在顺序执行代码语句的流程中执行条件性任务。根据设置的条件,判断是否运行一段代码语句。

基础

if语句中,如果判断为true,则执行给定的代码语句进行相关操作。如果判断为false,则略过给定的代码语句不进行相关操作。 基本语法:

if [ expression ];
then
statements
fi

注:
expression 是判断表达式。
statements 是给定的执行语句。

  • 结合&&逻辑运算符使用多个条件:
    if [ expression_1 ] && [ expression_2 ];
    then
    statements
    fi
  • 结合||逻辑运算符使用多个条件:
    if [ expression_1 ] || [ expression_2 ];
    then
    statements
    fi
  • 同时使用&&||逻辑运算符:
    if [[ expression_1 && expression_2 || expression_3 ]];
    then
    statements
    fi

示例:

#!/bin/bash


## TRUE && TRUE
if [ 8 -gt 6 ] && [ 10 -eq 10 ];
then
echo "Conditions are true"
fi


## TRUE && FALSE
if [ "mylife" == "mylife" ] && [ 3 -gt 10 ];
then
echo "Conditions are false"
fi

执行后得到以下结果:

Conditions are true

if 语句选项常用列表

选项 描述
! EXPRESSION 检查EXPRESSION是否为假。
-n STRING 检查STRING的长度是否大于零。
-z STRING 检查STRING的长度是否为零(即为空)
STRING1 == STRING2 检查STRING1是否等于STRING2
STRING1 != STRING2 检查STRING1是否不等于STRING2
INTEGER1 -eq INTEGER2 检查INTEGER1在数值上是否等于INTEGER2
INTEGER1 -gt INTEGER2 检查INTEGER1在数值上是否大于INTEGER2
INTEGER1 -lt INTEGER2 检查INTEGER1在数值上是否小于INTEGER2。
-d FILE 检查FILE是否存在并且它是一个目录。
-e FILE 检查FILE是否存在。
-r FILE 检查FILE是否存在,并授予读取权限。
-s FILE 检查FILE是否存在并且其大小大于零(表示它不为空)。
-w FILE 检查FILE是否存在并授予写权限。
-x FILE 检查FILE是否存在并授予执行权限。

嵌套 if 语句

在 Bash 的实际运用中可能会需要多个 if 语句。这时可能就会出现在一个 if 语句中使用另一个 if 语句的情况,这被称为嵌套 if 语句。 示例:

#!/bin/bash
#Nested if statement


if [ $1 -gt 50 ]
then
  echo "Number is greater than 50."


  if (( $1 % 2 == 0 ))
  then
    echo "and it is an even number."
  fi
fi

执行后得到以下结果:

Number is greater than 50.
and it is an even number.