unix中的test命令不打印输出

时间:2012-10-11 07:34:04

标签: bash command

为什么unix终端中的命令test 3 -lt 6没有输出?不应该测试输出0或1?

我做过男人测试,然后说

  

以EXPRESSION

确定的状态退出

3 个答案:

答案 0 :(得分:4)

不打印退出状态,只返回。您可以在ifwhile中对其进行测试,例如

if test 3 -lt 6 ; then
    echo ok
else
    echo not ok
fi

此外,最后一个表达式的退出代码保存在$?

test 3 -lt 6; echo $?

答案 1 :(得分:1)

test返回退出状态,该状态指示测试是否成功。您可以在执行$?后立即阅读test,或者直接在控制结构中使用它,例如:

if test 3 -lt 6 
  do echo "everything is aaaaalright"
  else echo "whaaat?"
fi

答案 2 :(得分:1)

shell中的每个命令都有一个返回值,而不仅仅是test。我们会轻松打印返回值,我们会直接测试它们,例如使用ifwhile语句,或者在&&||的快捷方式中使用它。有时我们可能会存储返回值,该值也可以在变量?中找到。

test命令相当古老。由于您已标记bash,因此您可能希望考虑使用

if (( 3 < 6 )); then 

用于算术测试,或

if [[ $name == "Fred Bloggs" ]] ; then 

用于文本或模式测试。

这些通常更直观,更不容易出错。与test一样,(( ))[[ ]]本身就是命令,可以在没有ifwhile的情况下使用。它们在true时返回0(成功),在false时返回1(失败)。

顺便说一句,当您执行man test时,您实际上正在查看test程序的文档。您最好使用man bashhelp test