这一招让我措手不及!
我们有一台 Solaris 机器(版本:SunOS 5.8)托管一个关键的脚本/进程,它已经运行了很多年而没有抱怨。我们最近有理由深入了解并发现一个测试条件——据我所知——不应该工作,但由于某种原因:
$ sh
$ [ 90% -gt 95 ]; echo $?
1
$ [ 96% -gt 95 ]; echo $?
0
Run Code Online (Sandbox Code Playgroud)
什么?!这似乎不是侥幸:
$ [ 96% -lt 95 ]; echo $?
1
$ [ 96% -eq 96 ]; echo $?
0
Run Code Online (Sandbox Code Playgroud)
这不仅仅是%
:
$ [ 96blah -eq 96 ]; echo $?
0
$ [ 1.2 -gt 1 ]; echo $?
1
Run Code Online (Sandbox Code Playgroud)
在 SunOS 5.8、5.9 和 5.10 上似乎是这样,但我之前没有注意到这一点。不幸的是,我手头似乎没有另一个非 Solaris 系统可以轻松检查它没有/bin/sh
与 bash 的符号链接(它的解释不是那么自由)。
所以,除了草率的代码(它x%
是由变量传递的,可能没有注意到),为什么标准(大概是 …