如何更新来自内部命令的标准输出?

如何更新来自内部命令的标准输出?

我有一个使用内部脚本的 bash 脚本,内部脚本本质上是交互的。

样本输出:

Speed: 1MB/S File_in_process: xyz.tar
Files extracted: file1, file2... fileN
...
...
Task completed successfully. 
# wrapper script operation
headers updated of file(1-N)
Script completed successfully. 

我需要帮助来删除Task completed successfully.或更新ABC Task completed successfully,因为它非常具有误导性并且会收到两条成功消息。我尝试使用/dev/null和,awk但无法更改一行。请分享一些想法。

答案1

提示:您确实应该提供一些示例代码,以便我们可以重现问题并查看详细信息。

首先应该检查手册页,ABC Task找到将其切换到静默或批处理模式的选项。

如果没有选项,则输出可以发送到/dev/null。您已经在问题中提到了此选项,但没有成功。所以我想你没有测试输出是发送到stdout还是发送到stderr。作为状态消息“ABC 任务成功完成”可能去stderr

# Send all output to /dev/null:
ABC_Task  >/dev/null 2>&1

# or only the "stderr", so regular operation output is displayed:
ABC_Task  2>/dev/null

# Then check for the exit code to decide the next action.
if [ $? -eq 0 ]; then
  echo "success"
else
  echo "failure"
fi

同样稍短一些,但不那么明显:

if ABC_Task  >/dev/null 2>&1; then
  echo "success"
else
  echo "failure"
fi

相关内容