这十分的直截了当检查单个命令是否返回退出代码 0。但是,我不确定如果在命令中使用 echo 该怎么办。例如,在这种情况下,我想要测试的程序肯定会返回非零退出代码,但看起来 bash 相反会查看 echo 的退出代码,即 0:
if echo "something" > exit 42; then
echo "OK"
else
echo "NOT OK"
fi
无法检查需要交互式输入的程序是否返回非零退出代码。我怎样才能解决这个问题并获取我正在回显某些内容的程序的退出代码?
答案1
事实证明 bash 确实退出得很好。问题在于,
if echo "something" > exit 42; then
只是将“某些内容”打印到名为 exit 的文件中,而不是运行 exit,因此返回码实际上是 0。要解决此问题,您应该使用“|”。if echo "something" | exit 42; then
按预期工作。