目前我们有一个shell脚本,它执行Java类并使用2>& 1将输出重定向到单个文件。我想在Java类执行后将输出捕获到Unix shell中,并查找是否有任何错误。这可以在不检查输出文件的情况下完成吗?
答案 0 :(得分:1)
一种选择是将错误输出发送到标准输出的单独文件中;那么你只需要查看错误文件是否为空。如果它是空的,则没有向stderr报告错误(遗憾的是,不能保证错误没有报告给stdout,但这是Java程序的QoI(实现质量)问题。)
您还可以查看Java程序的退出状态。它可能在成功时以零状态退出,并且可能在失败时以非零状态退出。但是,它可能会向stderr报告错误并仍然成功退出。
根据Java进程的作用,您可以使用$(...)
或反引号通过shell在变量中捕获的输出来运行它。然后,您将扫描变量(而不是文件),以确定是否出现任何问题。
答案 1 :(得分:1)
你可以使用tee:
myscript.sh 2>&1 | tee logfile
这会将脚本的所有输出(stdout和stderr)打印到stdout以及日志文件。