Bash if语句
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.