当我在终端中输入此内容时
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 1
。echo 0
答案3
如果您想要标准输出上的比较结果而不是退出代码,您可以使用以下expr(1)
命令:
$ expr 4 '<=' 6
1
需要注意两点:
- 您可能需要引用运算符,因为其中很多与 shell 元字符冲突
- 输出值与 的返回代码相反
test
。test
返回 0 表示 true(这是退出代码的标准),但expr
打印 1 表示 true。
答案4
您可以输入以下命令:
echo $(test -e myFile.txt) $?