Shell if的使用详解_&&与||的使用详解

1 IF使用详解


格式

1.1 单分支语句结构

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

1.2 双分支语句结构

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

1.3 多分支语句结构

if [ -f file ]; then
   echo "yes yes yes"
elif [ -z file ]; then
   echo "yes yes"
else
   echo "nonono"
fi

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

 

2 条件表达式的内容


2.1 字符串的判断

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

2.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为真

2.3 文件的判断

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

2.4 复杂逻辑判断

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

-a    与 
-o   或 
!    非

2.5 一个实例

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

3 &&与||的使用


有时候,我们可以直接使用&&和||的组合来代替if表达式。

2.1 &&运算符

command1  && command2
  • 命令之间使用 && 连接,实现逻辑与的功能。
  • 只有在 && 左边的命令返回真,&& 右边的命令才会被执行。
  • 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

2.2 ||运算符

command1 || command2
  •  命令之间使用 || 连接,实现逻辑或的功能。
  • 只有在 || 左边的命令返回假,|| 右边的命令才会被执行。
  • 只要有一个命令返回真,后面的命令就不会被执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值