在这个答案中,我有一些代码如下:
if [[ $ZSH_VERSION ]]; then
Run Code Online (Sandbox Code Playgroud)
这被编辑为:
if [[ -n $ZSH_VERSION ]]; then
Run Code Online (Sandbox Code Playgroud)
更新:我刚看到编辑评论:
[[ x ]] 直到最近才在 zsh 中工作
我查看了zsh发行说明,但找不到对此的参考。
zsh首先允许哪个版本[[ x ]]?
thr*_*rig 10
来自zsh5.5.1 文档CONDITIONAL EXPRESSIONS
为了兼容性,如果有一个在语法上不重要的参数,通常是一个变量,则条件被视为测试表达式是否扩展为非零长度的字符串。换句话说,[[ $var ]] 与 [[ -n $var ]] 相同。建议在可能的情况下使用第二种明确的形式。
有了源树,
% grep -rl 'if there is a single argument' .
./Doc/Zsh/cond.yo
% git blame ./Doc/Zsh/cond.yo | grep 'if there is a single argument'
d082827c83 (Jun T 2014-05-18 22:03:35 +0900 198) For compat...
Run Code Online (Sandbox Code Playgroud)
检查git log表明代码更改比文档更早:
commit 9d47e8398d299e53ffe4e7ddf3731d2fedae9948
...
Date: Tue May 13 08:16:50 2014 -0700
32609: [[ $var ]] behaves as [[ -n $var ]] for bash/ksh compatibility
Run Code Online (Sandbox Code Playgroud)
我不清楚ChangeLog文件到的映射git tag,但似乎zsh5.0.6(2014 年 8 月 28 日星期四 19:07:04 +0100)是第一个进行此更改的版本。