我想知道怎么回事
test -n
返回'true',例如:
if test -n; then echo "yes" ; else echo "no" ; fi
打印“是”,即使测试给出了理论上,一个空长字符串作为参数以及选项-n,它检查字符串长度是否为0(返回false)或其他(返回true)
谢谢
答案 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命令;请注意,特别是中间的一个!