【发布时间】:2011-10-25 13:29:04
【问题描述】:
在我的 bash 中,test 有一种以状态 0 退出的态度:
$ test -n && echo true || echo false
-> true
同时
$ test -n "" && echo true || echo false
-> false
这意味着当它根本没有收到任何参数时,它假定非零。
案例-z 可以正常工作:
$ test -z && echo true || echo false
-> true
$ test -z "" && echo true || echo false
-> true
这是预期的行为吗?
【问题讨论】:
-
好问题。我还想知道为什么
test -n和test -z(不带参数)都成功了。 -
请注意
&&和||!试试这个代码:touch ~/x && touch /x || echo fail- 如果touch /x失败,fail将被打印出来!