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