当前位置:首页>Linux>Linux结构化命令(三)——if-then高级特性

Linux结构化命令(三)——if-then高级特性

  • 2026-09-06 06:32:22
Linux结构化命令(三)——if-then高级特性
在Linux系统shell脚本中if-then语句除了可实现简单逻辑控制并处理,也可通过较复杂的复合测试条件、数学表达式条件和字符串处理条件等实现较为复杂的逻辑控制。
01
复合条件测试
if-then语句可以使用布尔逻辑将测试条件组合起来,如下:
[ condiition1 ] && [ condition2 ]   两个条件必须都满足时才执行
[ condiition1 ] || [ condition2 ]   任意一个条件为真,则执行
以上测试条件采用布尔运算符&&(AND)和||(OR)来组合两个条件,即if部分两个条件均为真(使用&&)或两个条件任意一个为真(使用||)时执行then部分的命令。
02
在子shell中执行命令的单括号
在if语句中可以通过单括号使用子shell,如下:
if (command)then    commandsfi
当shell执行单括号内的command命令前,会先创建一个子shell,然后在子shell中执行命令,如果执行成功则退出码被设置为0,then部分命令被执行,反之。
03
双括号内使用数学表达式
双括号命令可以实现在比较过程中使用高级数学表达式,较test中进行的简单算术操作实现逻辑更为复杂,其命令格式如下:
((expression))
其中expresssion部分可以是任意的数学赋值或比较表达式,除之前介绍的test命令中可使用的标准数学运算符外,还可使用如下运算符:
运算符
含义
运算符
含义
val++
后增
val--
后减
++val
先增
--val
先减
!
逻辑求反
~
位求反
**
幂运算
<<
左位移
>>
右位移
&
位布尔AND
|
位布尔OR
&&
逻辑AND
||
逻辑OR
注意:双括号命令既可以在if语句中使用,也可在脚本中使用的普通命令中用于赋值;双括号中表达式的大于号不用转义(/)。
04
用于高级字符串处理功能的双方括号
双方括号命令主要用于字符串比较的高级特性(并非所有shell支持双方括号),其格式如下:
[[ expression ]]
其中expression部分可以使用之前介绍的test命令中的标准字符串比较外,还支持模式匹配,在进行模式匹配时,可以定义通配符或正则表达式来匹配字符串。

最新文章

随机文章