总第1篇
test就是测试的意思,常用在流程控制语句中作为条件。下面做一下介绍。
关于真值
与其他语言不同,Bash(包括其他Shell)中,是用0表示真,非0表示假的。
之所以用0表示成功,而不是1来表示。我认为也是有一定道理的,因为成功的情况只有一种,而出错的可能却有许多,所以用正数来表示错误。不同的正数代表着不同的错误,所以一般情况下可以通过正数的值来判断是出了什么错误。
如果你有过POSIX编程经验(比如Linux下C编程),你会知道一个errno的东西。你也会知道大量的if语句用来测试一个函数的调用结果,每个函数基本上都是返回0时表示操作成功,而如果返回非0则出错,此时你也要exit(0)。
下面言归正传
测试整数
基本规则
整数的test就是大小关系的比较,与其他语言不同,Bash中没有使用<,>来做大于等于号,而是使用了减号开头的选项来比较。
假如有两个整数变量a和b。那么比较a是否大于b,就写作test $a -gt $b
,符合条件返回真值0。
实际在终端里测试的时候可以这样写来看test语句的执行结果:
test $a -gt $b && echo Yes
如果条件成立打印 Yes,不成立不打印。
全部选项
选项 | 描述 | 英文全称 |
---|---|---|
eq | 等于 | equal |
gt | 大于 | greater than |
lt | 小于 | less than |
ne | 不等于 | not equal |
ge | 大于等于 | greater or equal |
le | 小于等于 |