为什么unix终端中的命令test 3 -lt 6
没有输出?不应该测试输出0或1?
我做过男人测试,然后说
以EXPRESSION
确定的状态退出
答案 0 :(得分:4)
不打印退出状态,只返回。您可以在if
或while
中对其进行测试,例如
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
。我们会轻松打印返回值,我们会直接测试它们,例如使用if
或while
语句,或者在&&
或||
的快捷方式中使用它。有时我们可能会存储返回值,该值也可以在变量?
中找到。
test
命令相当古老。由于您已标记bash
,因此您可能希望考虑使用
if (( 3 < 6 )); then
用于算术测试,或
if [[ $name == "Fred Bloggs" ]] ; then
用于文本或模式测试。
这些通常更直观,更不容易出错。与test
一样,(( ))
和[[ ]]
本身就是命令,可以在没有if
或while
的情况下使用。它们在true时返回0(成功),在false时返回1(失败)。
顺便说一句,当您执行man test
时,您实际上正在查看test
程序的文档。您最好使用man bash
或help test
。