1

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

我做了一个男人测试,它说

以 EXPRESSION 确定的状态退出

4

3 回答 3

4

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

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

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

test 3 -lt 6; echo $?
于 2012-10-11T07:37:13.923 回答
1

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

if test 3 -lt 6 
  do echo "everything is aaaaalright"
  else echo "whaaat?"
fi
于 2012-10-11T07:37:40.877 回答
1

shell 中的每个命令都有一个返回值,而不仅仅是test. 返回值被快速打印出来,我们直接测试它们,例如使用iforwhile语句,或者可以在快捷方式中使用&&or ||。有时我们可能会存储返回值,它也存在于变量中?

test命令相当古老。既然您已标记bash,那么您可能希望考虑使用

if (( 3 < 6 )); then 

算术测试,或

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

用于文本或模式测试。

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

顺便说一句,当您执行 a 时,man test您实际上是在查看该test程序的文档。您可能会更好地使用man bashor help test

于 2012-10-11T07:55:20.703 回答