Linux与Shell学习--shell系列6--Shell运算符2(布尔运算符、字符串运算符)

目录

1、布尔运算符

2、字符串运算符


      上次说了算数运算符和关系运算符,这次说下布尔运算符和字符串运算符。

1、布尔运算符

        布尔运算符常见的有3种,! (非运算符)、-o(或运算符)、-a(与运算符)。

或运算:只要有一个为true则返回为true

运算符:必须都为true才返回为true

shell代码:

#!/bin/bash

#!非运算
if [ 10 != 10 ]    #判断10是不是等于10
then
    echo "如果为ture走该分支"
else
    echo "如果为false走该分支"
fi
#打印结果为:如果为false走该分支   因为10等于10,所以判断结果为false

#-a与运算
if [ 10 -gt 5 -a 10 -lt 20 ]  #判断10大于5并且小于20
then
    echo "两个条件都满足走该分支"   #如果判断为true走该分支
else
    echo "有一个条件不满足走该分支" #如果判断为flase走该分支
fi
#打印结果为:两个条件都满足走该分支  因为满足10大于5并且小于20,所以走到true分支中

#-o或运算
if [ 10 -gt 15 -a 10 -lt 20 ]  #判断10大于15并且小于20
then
    echo "有一个条件满足就走该分支"   #如果判断为true走该分支
else
    echo "都不满足走该分支"   #如果判断为flase走该分支
fi
#打印结果为:有一个条件满足就走该分支   因为满足10小于20这个判断,所以能走到true分支

代码截图:

运行结果截图:

 

 在进行或者与进行判断时,也可以使用&&(与-a用法相同,与运算)、||(与-o用法相同,或运算)不过在判断语句中需要用两组 [[  ]] 给括起来。

运行代码:

#!/bin/bash
#$$与运算
if [[ 10 -gt 5 && 10 -lt 20 ]]    #判断10大于5并且小于20
then
    echo "两个条件都满足走该分支"   #如果判断为true走该分支
else
    echo "有一个条件不满足走该分支" #如果判断为flase走该分支
fi
#打印结果为:两个条件都满足走该分支  因为满足10大于5并且小于20,所以走到true分支中

#||或运算
if [[ 10 -gt 15 || 10 -lt 20 ]]  #判断10大于15并且小于20
then
    echo "有一个条件满足就走该分支"   #如果判断为true走该分支
else
    echo "都不满足走该分支"   #如果判断为flase走该分支
fi
#打印结果为:有一个条件满足就走该分支   因为满足10小于20这个判断,所以能走到true分支
           

代码截图:

运行结果截图:

 

2、字符串运算符

         字符串运算符是针对字符串类型进行判断所使用的,常用的有以下几个=(判断两个字符串是否相等)、!=(判断两个字符串是否不相等)、-z(判断字符串长度是否为0)、-n(判断字符串长度是否不为0)、[字符串](判断字符串是否不为空)

shell代码:

#!/bin/bash
a="aaa"
b="bbb"

#=判断a的值和b的值是否相等
if [ $a = $b ]
then
   echo "如果a和b字符串相同则走该分支"     #如果判断为true走该分支
else
   echo "如果a和b字符串不相同则走该分支"   #如果判断为false走该分支
fi
#打印结果为:如果a和b字符串不相同则走该分支  因为判断a不等于b所以走的else分支


#!=不等于判断a和b的值是否不相等
if [ $a != $b ]
then
   echo "如果a和b字符串不相同则走该分支"     #如果判断为true走该分支
else
   echo "如果a和b字符串相同则走该分支"   #如果判断为false走该分支
fi
#打印结果为:如果a和b字符串不相同则走该分支   因为a不等于b所以直接走到then分支下


#-z判断字符串长度是否为0
if [ -z $a ]
then
   echo "如果a字符串长度为0走该分支"     #如果判断为true走该分支
else
   echo "如果a字符串长度不为0则走该分支"   #如果判断为false走该分支
fi
#打印结果为:如果a字符串长度不为0则走该分支   因为a的字符串长度为3所以走到了else分支下


#-n判断字符串长度是否不为0
if [ -n "$a" ]
then
   echo "如果a字符串长度不为0走该分支"     #如果判断为true走该分支
else
   echo "如果a字符串长度为0走该分支"   #如果判断为false走该分支
fi
#打印结果为:如果a字符串长度不为0走该分支     因为a的字符串长度不为0,所以在then分支下


#判断字符串是否为空
if [ $a ]
then
   echo "如果a字符串不为空走该分支"     #如果判断为true走该分支
else
   echo "如果a字符串为空走该分支"   #如果判断为false走该分支
fi
#打印结果:如果a字符串不为空走该分支   因为字符串a不为空所以走到了该分支下

代码截图:

运行结果:

 

        还剩最后一个文件测试运算符,下一章会说文件测试运算符的内容。


 下图为公众号二维码,内容会同步发出,大家可以关注一起学习

                                                          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘阿童木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值