shell_25.Linux复合条件测试

复合条件测试
1.if-then 语句允许使用布尔逻辑将测试条件组合起来。可以使用以下两种布尔运算符。

[ condition1 ] && [ condition2 ]
[ condition1 ] || [ condition2 ]

第一种布尔运算使用布尔运算符 AND 来组合两个条件。要执行 then 部分的命令,两个条件都必须满足。
第二种布尔运算使用 OR 布尔运算符来组合两个条件。如果任意条件为真,那么 then 部分的命令就会执行。
下面来演示 AND 布尔运算符的用法:

$ cat AndBoolean.sh 
#!/bin/bash 
# Testing an AND Boolean compound condition 
# 
if [ -d $HOME ] && [ -w $HOME/newfile ] 
then 
    echo "The file exists and you can write to it."  
else 
    echo "You cannot write to the file."  
fi 
$ 
$ ls -l $HOME/newfile 
ls: cannot access '/home/christine/newfile': No such file or directory 
$ 
$ ./AndBoolean.sh 
You cannot write to the file. 
$ 
$ touch $HOME/newfile 
$ 
$ ./AndBoolean.sh 
The file exists and you can write to it. 
$

2.if-then 的高级特性
a.在子 shell 中执行命令的单括号。
b.用于数学表达式的双括号。
c.用于高级字符串处理功能的双方括号

(1)使用单括号
单括号允许在 if 语句中使用子 shell,单括号形式的 test 命令格式如下:

(command)

bash shell 执行 command 之前,会先创建一个子 shell,然后在其中执行命令。
如果命令成功结束,则退出状态码会被设为 0,then 部分的命令就会被执行。
如果命令的退出状态码不为 0,则不执行 then 部分的命令。

$ cat SingleParentheses.sh 
#!/bin/bash 
# Testing a single parentheses condition 
# 
echo $BASH_SUBSHELL 
if (echo $BASH_SUBSHELL) 
then 
    echo "The subshell command operated successfully." 
else 
    echo "The subshell command was NOT successful." 
fi 
$ 
$ ./SingleParentheses.sh 
01 
The subshell command operated successfully. 
$

(2)使用双括号
双括号命令符号

val++             后增
val--             后减
++val             先增
--val             先减
!                 逻辑求反
~                 位求反
**                幂运算
<<                左位移
>>                右位移
&                 位布尔 AND
|                 位布尔 OR
&&                逻辑 AND
||                逻辑 OR
$ cat DoubleParentheses.sh 
#!/bin/bash 
# Testing a double parentheses command 
# 
val1=10 
if (( $val1 ** 2 > 90 )) 
then 
    (( val2 = $val1 ** 2 )) 
    echo "The square of $val1 is $val2," 
    echo "which is greater than 90." 
fi 
$ 
$ ./DoubleParentheses.sh 
The square of 10 is 100, 
which is greater than 90. 
$

(3)使用双方括号
双方括号命令提供了针对字符串比较的高级特性。双方括号的格式如下:

[[ expression ]] 


expression 可以使用 test 命令中的标准字符串比较。除此之外,它还提供了 test 命令所不具备的另一个特性——模式匹配。

$ cat DoubleBrackets.sh 
#!/bin/bash 
# Using double brackets for pattern matching 
# 
if [[ $BASH_VERSION == 5.* ]] 
then 
    echo "You are using the Bash Shell version 5 series." 
fi 
$ 
$ ./DoubleBrackets.sh
You are using the Bash Shell version 5 series. 
$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

微辣已是极限

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

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

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

打赏作者

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

抵扣说明:

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

余额充值