unix 中的测试命令不打印输出

unix 中的测试命令不打印输出

当我在终端中输入此内容时

test 4 -lt 6

我没有得到任何输出。为什么不?我需要 0 或 1

答案1

你会得到 0 或 1。在退出代码中。

bash-4.2$ test 4 -lt 6

bash-4.2$ echo $?
0

bash-4.2$ test 4 -gt 6

bash-4.2$ echo $?
1

更新:要存储退出代码以供以后使用,只需将其分配给一个变量即可:

bash-4.2$ test 4 -lt 6

bash-4.2$ first=$?

bash-4.2$ test 4 -gt 6

bash-4.2$ second=$?

bash-4.2$ echo "first test gave $first and the second $second"
first test gave 0 and the second 1

答案2

另一种方法是

test 4 -lt 6 && echo 1 || echo 0

但在这种情况下要小心。如果test返回成功则执行失败echo 1echo 0

答案3

如果您想要标准输出上的比较结果而不是退出代码,您可以使用以下expr(1)命令:

$ expr 4 '<=' 6
1

需要注意两点:

  1. 您可能需要引用运算符,因为其中很多与 shell 元字符冲突
  2. 输出值与 的返回代码相反testtest返回 0 表示 true(这是退出代码的标准),但expr打印 1 表示 true。

答案4

您可以输入以下命令:

echo $(test -e myFile.txt) $?

相关内容