前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell系列-shell第十一讲

shell系列-shell第十一讲

作者头像
小小科
修改2020-05-09 14:17:05
3910
修改2020-05-09 14:17:05
举报
文章被收录于专栏:北京马哥教育北京马哥教育

今天和大家分享一下shell系列-shell第十一讲内容!希望对大家有所帮助!

1、条件表达式 1.1、[ expression ] 用法 [ expression ]是用来做判断的字符。比如: bash [root@master1 ~]#[ 1 -eq 1 ] [root@master1 ~]#echo $? 0 这里的-eq就相当于我们数学上的等于号,那么我们这里的[ 1 -eq 1 ]表示1是否等于1,我们使用中括号做一个判断,1确实等于1,此时条件为真,命令执行成功,返回值为0。 或者我们可以使用的高级一点: bash [root@master1 ~]#[ 1 -eq 1 ] && echo "yes,1 确实等于1" || echo "no ,两者不相等" yes,1 确实等于1 [root@master1 ~]#[ 1 -eq 2 ] && echo "yes,1 确实等于1" || echo "no ,两者不相等" no ,两者不相等 1.2、[[ expression ]]用法 两个双括号是我们的bash shell的内置功能,一般情况下[ ]和[[ ]]用法是一样的,比如: bash [root@master1 ~]#[[ 1 -eq 1 ]] && echo "yes,1 确实等于1" || echo "no ,两者不相等" yes,1 确实等于1 都可以来做判断。大多数情况下都是一样的效果。不过两者也有一些区别。 2、[ ]和[[ ]]的区别 其实很多人对这两种用法上都会感到很大的疑惑,不知道什么时候用哪个,在此我总结了一下, bash [root@master1 ~]#cat a.sh !/bin/bash NAME="aaa bbb" if [ "$NAME" == "aaa bbb" ] then echo "yes. 相等" else echo "no, 不相等" fi [root@master1 ~]#bash a.sh yes. 相等 写一个shell脚本,然后使用[ ]来进行比对。然后发现两者是相等的。没有问题。 现在我们使用[[ ]]来试试。 bash [root@master1 ~]#cat a.sh !/bin/bash NAME="aaa bbb" if [[ "$NAME" == "aaa bbb" ]] # 注意我这里改成了两个括号 then echo "yes. 相等" else echo "no, 不相等" fi [root@master1 ~]#bash a.sh yes. 相等 [root@master1 ~]# 使用[[ ]]发现同样的结果,没有区别。 现在我们对引用的变量不加双引号,且使用单括号看看。 bash [root@master1 ~]#cat a.sh !/bin/bash NAME="aaa bbb" if [ $NAME == "aaa bbb" ] # 这里发生了改变,没有引号,且为单括号 then echo "yes. 相等" else echo "no, 不相等" fi [root@master1 ~]#bash a.sh a.sh: 第 4 行:[: 参数太多 no, 不相等 直接报了一个错误给我们,然后还返回的是错误的结果,两个字符串明明是一样的。看来在单括号情况下必须加上双引号才行。 然后我们现在不加双引号,且使用双括号来看看 bash [root@master1 ~]#cat a.sh !/bin/bash NAME="aaa bbb" if [[ $NAME == "aaa bbb" ]] then echo "yes. 相等" else echo "no, 不相等" fi [root@master1 ~]#bash a.sh yes. 相等 发现没有报错,这就是使用双括号的好处,因为很多人不喜欢引用变量的时候还加上双引号,他们往往只写引用变量的写法,这就导致程序经常出错的问题。 总结:当使用引用变量名这种机制时,[ ]和[[ ]]是有区别的,使用[ ]时需要在变量的外侧加上双引号,而使用[[ ]]时则不用这么来写。 3、test命令检测 test命令的功能和[ ]是一模一样的,在[ ]中需要注意的点,在test命令中同样需要注意。 test的用法是: bash [root@master1 ~]#test 1 -eq 1 [root@master1 ~]#echo $? 0 [root@master1 ~]#test 1 -eq 2 [root@master1 ~]#echo $? #得出错误的结果。 1

文章来自马哥教育官网欧! 如需要更多技术性文章,可以直接访问马哥教育官网!

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档