我有一个使用内部脚本的 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