本文旨在复习Shell脚本编程中的条件测试和5种基本运算符
知识储备
Bash支持众多运算符,算数、关系、布尔、字符串、文件测试运算符
而这些运算符中打印结果为0或1的,即结果为布尔型的运算都可以作为条件测试Expression
原生Bash不支持简单的数学运算,只能通过别的方式得到 参考Shell系列6—取算数运算数值
什么是条件测试?
● 条件测试,即对于给定的某种条件或某几种条件判断真假,并给出返回值
● 若测试条件为真,则返回一个0值;如果测试条件为假,将返回一个非0整数值。
● 依据返回值,shell脚本可有选择地执行某些片段,最常见的是If的条件表达式、while的循环条件等
● 测试命令可文件测试、整数测试、字符串测试等,本质是对不同运算符运算结果真假判断,即Expression
● 测试命令1.2.3基本效果相同,但是[[ ]]是关键字,其他是built内建命令
● 命令 和 关键字的差别有多大呢?
如果是命令,它把参数作为比较表达式或文件测试,并且根据比较结果,返回一个退出码。那样比如 ">" "<" 就被 shell 解释为重定向符号了。关键字却不这样。关键字把整个表达式看作一个单独的元素,并且返回一个退出码。[[]]结构比[]更灵活,是一个扩展的test命令。
算数运算符
注意点:
<1>注意:Bash原生不支持算术运算的,需要使用别的办法来获取算数运算值 参考shell系列6
<2>输出结果可以是数值,也可以是0/1这样的布尔型,因此也可以作为条件测试的 Expression
<3>如果是做条件测试,那么需要以这样的形式来写[ Experssion ] 左右两侧有空格!
关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
输出结果是布尔型,因此可以作为条件测试的 Expression
布尔运算符
布尔运算符运算结果本来就是布尔型,显然可以作为条件测试的 Expression
字符串运算符
字符串运算符能比较string、是否为空等,结果也是布尔型,也可做条件测试 Expression
补充字符串其实也是可以比较大小,本质是对应ASCII数值大小的比较,用法如下
1 | #!/bin/bash |
文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。结果为布尔型,也可做条件测试 Expression
转载于:https://blog.51cto.com/bluebox/1696936