在 Shell 中,关键字 if 是用于测试某个条件语句是否满足一定的条件,如果满足特定的条件,则会执行 if 对应的 then 后缩进的代码块,否则就忽略该代码块继续执行后续的代码。
elif 关键字用于在 if 语句条件不满足的情况下,继续执行 elif 里面的逻辑判断,如果满足条件则执行 elif 缩进里面的逻辑。
elif 语句只能写在 if 语句的同级代码的后面,且 elif 语句可以写任意多个。
if condition1 then statement1 elif condition2 then statement2 elif condition3 then statement3 fi
参数 | 描述 |
---|---|
if | if 条件判断使用的关键字 |
condition1 | 条件判断语句,必须返回真或者假 |
elif | elif 条件判断使用的关键字 |
condition2 | 条件判断语句,必须返回真或者假,如果 condition1 不满足,才会判断 condition2 |
condition3 | 条件判断语句,必须返回真或者假,如果 condition1 和 condition2 都不满足,才会判断 condition3 |
Shell 中的 elif 语句后面的条件判断表达式只有在 if 条件不满足的情况下,才会测试 elif 的条件。
这里,如果 if 的条件 condition1 为假,此时会继续测试 elif 的条件判断 condition2,如果此时 condition2 为真,那么下面的 condition3 就不会再继续判断。
否则,继续判断 condition3 的条件,如果满足,则执行,否则,什么都不执行。
如果 if 语句条件为真,则不会执行 elif 相对应的代码
#!/bin/bash
a=10
b=5
if (( $a > 8 ))
then
echo "a > 8"
elif (( $a > $b ))
then
echo "a > b"
fi
echo "Over"
程序运行后,控制台输出如下:
首先,我们定义了两个 变量 a 和 b,并分别赋值为 10 和 5。接着,我们使用 if 语句判断 a > 8
的条件,如果条件满足,则执行 then 缩进里面的输出语句。
同时,我们还使用 elif 语句,判断 a > b 的条件时否满足,如果 if 语句不满足,elif 语句满足,则才会执行 elif 语句里面的逻辑。
最后,我们的程序输出了 "a > 8"
和 "Over"
,因为在第一个判断时 a > 8 的条件是成立的,所以会执行 if 缩进里面的输出语句,此时,虽然 elif 语句里面的逻辑也是成立的,但因为 if 语句已经成立了,if 语句与 elif 语句是互斥的执行,所以 elif 里面的语句未能执行。最后一个输出语句不管条件满足不满足则都会执行。
如果 if 语句条件为假,elif 为真,此时会执行 elif 相对应的代码
#!/bin/bash
a=10
b=5
if (( $a > 20 ))
then
echo "a > 20"
elif (( $a > $b ))
then
echo "a > b"
fi
echo "Over"
程序运行后,控制台输出如下:
首先,我们定义了两个变量 a 和 b,并分别赋值为 10 和 5。接着,我们使用 if 语句判断 a > 20
的条件,如果条件满足,则执行 then 缩进里面的输出语句。
同时,我们还使用 elif 语句,判断 a > b 的条件时否满足,如果 if 语句不满足,elif 语句满足,则才会执行 elif 语句里面的逻辑。
最后,我们的程序输出了 "a > b"
和 "Over"
,因为在第一个判断时 a > 20 的条件是不成立的,所以不会执行 if 大括号里面的输出语句,此时,elif 语句里面的逻辑是成立的,而且前面的 if 语句不成立了,所以 elif 里面的语句能成功执行。最后一个输出语句不管条件满足不满足则都会执行。
多个 elif 语句,会被依次判断,直到满足的第一个执行
#!/bin/bash
a=10
b=5
if (( $a > 20 ))
then
echo "a > 20"
elif (( $a > 15 ))
then
echo "a > 15"
elif (( $a > 10 ))
then
echo "a > 10"
elif (( $a > b ))
then
echo "a > b"
fi
echo "Over"
程序运行后,控制台输出如下:
首先,我们定义了两个变量 a 和 b,并分别赋值为 10 和 5。接着,我们使用 if 语句判断 a > 20 的条件,如果条件满足,则执行缩进里面的输出语句。
同时,我们还使用 elif 语句,判断 a > 15 的条件时否满足,判断 a > 10 的条件是否满足,判断 a > b 的条件是否满足,如果满足任意一个,则会执行相对应的代码。
最后,我们的程序输出了 "a > b"
和 "Over"
,因为在第一个判断时 a > 20 的条件是不成立的,所以不会执行 if 缩进里面的输出语句,此时,最后一个 elif 语句里面的逻辑是成立的,而前面所有的 elif 语句都不成立,所以最后一个 elif 里面的语句被执行。最后一个输出语句不管条件满足不满足则都会执行。
elif 关键字用于在 if 语句条件不满足的情况下,继续执行 elif 里面的逻辑判断,如果满足条件则执行 elif 缩进里面的逻辑。elif 语句只能写在 if 语句的同级代码的后面,且 elif 语句可以写任意多个。