在我的bash中test有退出状态的态度0:
$ test -n && echo true || echo false
-> true
Run Code Online (Sandbox Code Playgroud)
而
$ test -n "" && echo true || echo false
-> false
Run Code Online (Sandbox Code Playgroud)
这意味着当它根本没有收到任何参数时,它假定为非零.
案例-z正常工作:
$ test -z && echo true || echo false
-> true
$ test -z "" && echo true || echo false
-> true
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?
基本上,您要测试字符串"-z"是否为非空.它是,它告诉你true.实际算法测试使用的是:
0参数:
退出false(1).
1个论点:
如果$ 1不为null,则退出true(0); 否则,退出false.
2个论点:
如果$ 1是'!',如果$ 2为null,则返回true;如果$ 2不为null,则返回false.
如果$ 1是一元主要,如果一元测试为真,则返回true,如果一元测试为假,则返回false.
否则,产生未指定的结果.
...
引自POSIX测试命令规范.