2011-03-27 56 views
3

我不知道如何来在bash中'test -n'如何返回'true'?

test -n 

返回“真”,例如:

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

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

谢谢

回答

3

它出于同样的原因test x返回true返回true - 字符串-n非空。它没有执行-n选项,因为-n需要第二个参数,而您没有提供。

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

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

5

从文档:

test[建宏评估使用 基于参数个数一组规则的条件表达式。

0自变量: 表达式为false。

1参数: 当且仅当参数不是 null时,表达式才为true。

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