shell编写之路——字符串运算符和逻辑运算符

shell编写之字符串运算符和逻辑运算符

声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

上一篇文章中介绍了一下数值比对,这里介绍一下字符串比对,先写一个简单的案例来看看。

str1="hello"
str2="hello"
if [ "$str1" = "$str2" ]; then #注意这里的字符串要用""包裹起来
	echo 两个字符串相同
else
	echo 两个字符串不相同
	
fi

这个脚本其实很简单,就是定义了两个字符串然后进行比对,相同则输出两个字符串相同,不相同则输出不相同。运行效果

为了直观一点这里改下一下脚本,让我们自己输入字符串2

str1="hello"
read -p "请输入字符串:"  str2
if [ "$str1" = "$str2" ]; then 
	echo 两个字符串相同
else
	echo 两个字符串不相同
	
fi
str1="hello"
read -p "请输入字符串:"  str2
if [ "$str1" != "$str2" ]; then 
	echo 两个字符串不相同
else
	echo 两个字符串相同
	
fi

两个脚本效果一样,只是第二个判断的时候做了修改!=不等于

因为Linux系统对大小写敏感,所以会返回不相同

如何判断字符串是否为空

通过使用-z参数来检查字符串长度是否为0,-n检查字符串长度是否不为0

read -p "请输入字符串: " str1
if [ -z "$str1" ]; then
    echo "字符串是空的"
else
    echo "字符串不是空的"
fi

运行结果:

接下来看看-n的,其实和-z大差不差只是需要单纯的换一下逻辑,逻辑刚好相反

read -p "请输入字符串: " str1
if [ -n "$str1" ]; then 
    echo "字符串不是空的"
else
    echo "字符串是空的"
fi

运行结果:

逻辑运算

||

num1=9
read -p "请输入一个数字" num2
if [ "$num1" != 9 ] || [ "$num2" -lt 20 ]; then #-lt表示小于
    echo "真"
else
    echo "假"
fi

简单解释一下,||表示或,即[ "$num1" != 9 ] $num1不等于9)和[ "$num2" -lt 20 ]$num2小于20)有一个成立即可返回真,为啦理解方便,这里直接把前一个写成假的,我们输入的数字只要小于20就会始终输出真,大于20就会输出假

看一下效果

也可以使用-o参数

num1=9
read -p "请输入一个数字" num2
if [ "$num1" != 9 -o "$num2" -lt 20 ]; then #-lt表示小于
    echo "真"
else
    echo "假"
fi

效果一样

&&

接着讲一下与运算,与运算跟或刚好相反两个条件都必须是真的才会返回真,有一个是假的就会返回假,直观一点修改上面的脚本做例子

num1=9
read -p "请输入一个数字" num2
if [ "$num1" = 9 ] && [ "$num2" -lt 20 ]; then 
    echo "真"
else
    echo "假"
fi

注意,这个脚本换了一下if判断的条件,条件变为啦[ "$num1" = 9 ]$num1等于9)和[ "$num2" -lt 20 ]$num2小于20)两个条件必须同时满足才能返回真,第一个条件已经为真啦,只需要控制第二个条件就好了

运行结果:

或者使用-a参数,效果一样

num1=9
read -p "请输入一个数字" num2
if [ "$num1" = 9 -a $num2" -lt 20 ]; then 
    echo ""
else
    echo "假"
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值