为什么'test -n'在bash中返回'true'?

时间:2011-03-27 16:04:27

标签: bash

我想知道怎么回事

test -n

返回'true',例如:

if test -n; then echo "yes" ; else echo "no" ; fi

打印“是”,即使测试给出了理论上,一个空长字符串作为参数以及选项-n,它检查字符串长度是否为0(返回false)或其他(返回true)

谢谢

2 个答案:

答案 0 :(得分:5)

来自文档:

  

test[内置函数使用计算条件表达式       一组基于参数数量的规则。

     

0个参数:       表达式是假的。

     

1个论点:            当且仅当参数不是时,表达式才为真            空。

在您的情况下,您只需要一个非空参数(-n)。

答案 1 :(得分:3)

它返回true,原因相同test x返回true - 字符串-n非空。它没有使用-n选项,因为-n需要第二个参数,而您没有提供。{/ p>

test -n  ""  || echo false
x=""
test -n  $x  && echo true
test -n "$x" || echo false

执行每个echo命令;请注意,特别是中间的一个!