Shell布尔运算

本文深入探讨了在Linux Shell中如何使用布尔运算符,包括逻辑与(&&)、逻辑或(||)、逻辑非(!)等,阐述它们在脚本中的应用,以及在条件判断中的重要性。通过实例解析,帮助读者掌握Shell布尔运算的精髓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. bash里的true和false并不是我们通常所认为的0和1。
true和false是shell的内置命令,返回逻辑值。例如:
$ true
$ echo $?
0
$ false
$ echo $?
1
$?是一个特殊的变量,存放有上一个程序的结束状态
在shell里面,把0作为程序是否成功结束的标志。
 
2. 在shell中,逻辑值表示程序的返回值,如果程序成功返回,
则为真,如果不成功返回,则为假。
 
3. test命令可以用来进行数值测试,字符串测试,文件测试。
* 数值测试:
$ if test 5 -eq 5 ; then echo "YES" ; else echo "NO"; fi
YES
$ if test 5 -ne 5 ; then echo "YES" ; else echo "NO"; fi
NO
* 字符串测试
$ if test -n "not empty" ; then echo "YES" ; else echo "NO"; fi
YES
-n 测试字符串的长度不为零
$ if test -z "not empty" ; then echo "YES" ; else echo "NO"; fi
NO
-z 测试字符串的长度为零
$ if test -z "" ; then echo "YES" ; else echo "NO"; fi
YES
* 文件测试
$ if test -f /boot/System.map ; then echo "YES" ; else echo "NO"; fi
YES
-f 用来测试文件是否存在,以及是否是一个普通的文件
$ if test -d /boot/System.map ; then echo "YES" ; else echo "NO"; fi
-d 用来测试文件是否存在,以及是否是一个目录
 
4. test逻辑组合测试
* 与,例如:
$ a=5; b=4; c=6;
$ if test $a -eq 5 -a $b -eq 4 -a $c -eq 6 ; then echo "YES" ; else echo "NO" ; fi
YES
* 或,例如:
$ if test $a -eq 5 -o $b -ne 4 ; then echo "YES" ; else echo "NO" ; fi
YES
* 非,例如:
$ if test ! -f /etc/profile ; then echo "YES" ; else echo "NO" ; fi
NO
 
5. test与&&,||
$ str1="test"; str2="test"
$ if test -z "$str1" -o "$str2" == "$str1" ; then echo "YES" ; else echo "NO" ; fi
YES
$ if test -z "$str1" || test "$str1"=="$str2" ; then echo "YES" ; else echo "NO" ; fi
YES
两个测试语句是等价的。但是可以看到-o使用在test内部,而||使用在test之间
test可以使用[]来代替,需要注意的是[]的前后都需要空格
在测试字符串时,建议所有的变量都用双引号括起来,以防止变量代表的字符串为空的情况
在使用中括号测试时,要注意:
$ i=5
$ if [ $i=6 ] ; then echo "YES" ; else echo "NO"; fi
YES
$ if [ $i = 6 ] ; then echo "YES" ; else echo "NO"; fi
NO
 
6. 命令列表
* 对于&&,如果前面的命令成功执行,则继续执行后面的命令;如果失败,就不执行后面的命令
* 对于||,若果前面的命令没有成功执行,则继续执行后面的命令
例如:
ping -c1 www.lzu.edu.cn && echo "connected"

* 命令列表有时用来取代if/then等分支结构,这样可以省略一些代码


参考资料

====================

Shell编程范例 -- by falcon

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值