这个脚本:
a=2
[[ "$a" -eq 2 ]] && echo yes1
[[ $a -eq 2 ]] && echo yes2
[[ a -eq 2 ]] && echo yes3
[[ "a" -eq 2 ]] && echo yes4
Run Code Online (Sandbox Code Playgroud)
不适用于破折号(以及其他一些没有 [[ )。
在ash (BusyBox ash) 中的最后两个“是”测试失败。正如我所料。
但是,完全不符合预期:
当使用算术 » -eq « 时(和其他一些)会发生这种情况。
打印ksh、ksh93、lksh、mksh、bash和zsh 中的所有四个 yes 。
这是将“算术扩展”应用于 ( a)等标签的自然副作用吗?。
(没什么可看的,继续前进?)
a引用时( ) 是否仍应扩展为变量:"a"?
这是否记录在我还没有研究过的地方?
或者,是一个简单的(非常古老的)错误吗? …