test 3 -lt 6
为什么unix 终端中的命令没有输出?不应该测试输出 0 或 1 吗?
我做了一个男人测试,它说
以 EXPRESSION 确定的状态退出
退出状态不打印,只是返回。您可以在if
或中对其进行测试while
,例如
if test 3 -lt 6 ; then
echo ok
else
echo not ok
fi
此外,最后一个表达式的退出代码保存在$?
:
test 3 -lt 6; echo $?
test
返回退出状态,该状态指示测试是否成功。$?
您可以在执行后立即读取它,test
也可以直接在控制结构中使用它,例如:
if test 3 -lt 6
do echo "everything is aaaaalright"
else echo "whaaat?"
fi
shell 中的每个命令都有一个返回值,而不仅仅是test
. 返回值被快速打印出来,我们直接测试它们,例如使用if
orwhile
语句,或者可以在快捷方式中使用&&
or ||
。有时我们可能会存储返回值,它也存在于变量中?
。
该test
命令相当古老。既然您已标记bash
,那么您可能希望考虑使用
if (( 3 < 6 )); then
算术测试,或
if [[ $name == "Fred Bloggs" ]] ; then
用于文本或模式测试。
这些通常更直观且不易出错。Like test
, (( ))
and[[ ]]
本身就是命令,可以在没有if
or的情况下使用while
。它们在 true 时返回 0(成功),在 false 时返回 1(失败)。
顺便说一句,当您执行 a 时,man test
您实际上是在查看该test
程序的文档。您可能会更好地使用man bash
or help test
。