[bash]比较运算总结

声明:本文内容部分有待验证

1. test expr 和 [ expr ]

内置命令,

两者完全等价,可测试的范围:
1.1. 算术比较:-eq,-ne,-le,-gt等,其中,e->equal, n->not, l->littler, g->greater,t->than;
1.2. 字符比较:=,==,>,<等,其中,=和==意义相同,<和>在shll中有特殊含义须转义;
1.3. 文件测试:-d(irectory),-e(xist),-f(ile), -h(ardlink), -r(ead)等;
1.4. shell测试: -o nounset等;

#说明,多个expr可以通过-a -o 或!进行组合,()可以用来改变结合的优先级,但是须转义。

2、[[ cmd ]]

组合命令,

测试条件
1.1~1.4同样适用于[[]]

不同点:
2.1 <>按locale设置排序;而在test中按ASCII排序
2.2 [[]]使用&&和|| 代替-a 和-o, -o 和-a 一般都是搭配test 命令或者[]
2.2 =~执行正则匹配;

$[[ $a =~ z* ]]         # 如果$a 以"z"开头(正则匹配),那么将为true
$[[ $a == "z*" ]]       # 如果$a 等于z*  (字符匹配),那么结果为true

3、(())

本义是用来计算算术表达式的,同let;
由于数值也能被当作逻辑值,所以(())也能当作测试条件: 数值0表示逻辑假,非0表示逻辑真
不需要对 (( 和 )) 之间的操作符转义

参考文档:

https://www.ibm.com/developerworks/cn/linux/l-bash-test.html
http://www.2cto.com/os/201202/120793.html
http://blog.sina.com.cn/s/blog_605f5b4f01013lui.html
man bash

你可能感兴趣的:(bash笔记)