shell编程学习笔记(八):Shell中if判断的使用

时间:2023-03-09 22:14:45
shell编程学习笔记(八):Shell中if判断的使用

一、if的语法:

1、单分支语句结构

if [ 条件表达式 ]; then
指令
fi

2、双分支语句结构

if [ 条件表达式 ]; then
指令一
else
指令二
fi

3、多分支语句结构

if [ 条件表达式 ]; then
指令一
elif [ 条件表达式 ]; then
指令二
else
指令三
fi

上面直接给出了多分支if语句的一个实例。从上面三个结构中可以看出,条件表达式的左右都要有空格。

二、条件表达式的内容

1、字符串的判断

str1 = str2      当两个串有相同内容、长度时为真
str1 != str2      当串str1和str2不等时为真
-n str1        当串的长度大于0时为真(串非空)
-z str1        当串的长度为0时为真(空串)
str1         当串str1为非空时为真

2、数字的判断

int1 -eq int2    两数相等为真
int1 -ne int2    两数不等为真
int1 -gt int2    int1大于int2为真
int1 -ge int2    int1大于等于int2为真
int1 -lt int2    int1小于int2为真
int1 -le int2    int1小于等于int2为真

3、文件的判断

-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

4、复杂逻辑判断

条件表达式中可能有多个条件,需要使用与或非等逻辑操作。

-a         与
-o        或
!        非

三、实例

if [ $score -ge 0 ]&&[ $score -lt 60 ];then
echo "sorry,you are lost!"
elif [ $score -ge 60 ]&&[ $score -lt 85 ];then
echo "just soso!"
elif [ $score -le 100 ]&&[ $score -ge 85 ];then
echo "good job!"
else
echo "input score is wrong , the range is [0-100]!"
fi

当然,上面的实例也可以用 -a 来改写:

if [ $score -ge 0 -a $score -lt 60 ];then
echo "sorry,you are lost!"
elif [ $score -ge 60 -a $score -lt 85 ];then
echo "just soso!"
elif [ $score -le 100 -a $score -ge 85 ];then
echo "good job!"
else
echo "input score is wrong , the range is [0-100]!"
fi