📜  if shell 中的多个条件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:15:47.697000             🧑  作者: Mango

Shell脚本中的多个条件

Shell脚本中,我们经常需要判断多个条件,可以使用if语句来实现。这里介绍几种实现多个条件判断的方法。

方法一

使用&&和||来关联多个判断条件,&&表示“并且”,||表示“或者”。实例如下:

#!/bin/bash

read -p "请输入数字:" num

if [ $num -gt 0 ] && [ $num -lt 10 ]; then
    echo "$num 在 0 和 10 之间"
elif [ $num -ge 10 ] || [ $num -le 0 ]; then
    echo "$num 小于等于 0 或者大于等于 10"
fi

在这个例子中,当输入的数字在0和10之间时,输出“$num 在 0 和 10 之间”,否则输出“$num 小于等于 0 或者大于等于 10”。

方法二

使用方括号[]结合逻辑操作符来完成多条件判断,逻辑操作符包括!(非)、-a(与)、-o(或)。

示例如下:

#!/bin/bash

read -p "请输入数字:" num

if [ ! $num -eq 0 -a $num -gt 0 -a $num -lt 10 ]; then
    echo "$num 在 0 和 10 之间"
elif [ $num -ge 10 -o $num -le 0 ]; then
    echo "$num 小于等于 0 或者大于等于 10"
fi

在这个例子中,使用!来取反条件,-a表示与,-o表示或。当输入的数字在0和10之间时,输出“$num 在 0 和 10 之间”,否则输出“$num 小于等于 0 或者大于等于 10”。

方法三

使用括号()和双竖线||或双和号&&来完成多条件判断,括号内的条件使用逗号分隔。

示例如下:

#!/bin/bash

read -p "请输入数字:" num

if ([ $num -gt 0 ] && [ $num -lt 10 ]) || ([ $num -lt 0 ] && [ $num -gt -10 ]); then
    echo "$num 在(-10,0)或(0,10)之间"
elif [ $num -ge 10 ] || [ $num -le -10 ]; then
    echo "$num 小于等于 -10 或者大于等于 10"
fi

在这个例子中,使用括号把条件分组,双竖线表示或,双和号表示并且。当输入的数字在(-10,0)或(0,10)之间时,输出“$num 在(-10,0)或(0,10)之间”,否则输出“$num 小于等于 -10 或者大于等于 10”。

以上是三种常用的多条件判断方法,开发者可以结合自己的实际需求选择使用。