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