我有一个包含许多命令的 bash 脚本,其中一些可能会生成错误消息。通常,错误消息和输出消息以明显不正确的顺序混合在一起(例如,我看到命令 #2 的输出,然后是命令 #1 的错误消息)。
据我了解,原因是这些命令使用两个输出流——stdout 和 stderr——并且它们中的每一个都异步打印到控制台。因此,一种解决方案是通过在每个命令后添加“2>&1”来将 stderr 重定向到 stdout。
但由于我有很多命令,最好对所有命令执行一次。是否有一个命令可以放在脚本的开头,以确保所有命令的所有错误消息都重定向到标准输出,以便所有输出以正确的顺序显示?
虽然我不太明白标准输出和错误流如何在两个或多个非并发命令之间相互混淆,但您可以让脚本在开始时使用单个命令将两个输出流重定向到同一个位置脚本:
或者,您可以使用重定向启动脚本:
就个人而言,我会选择这些选项中的第二个,因为它可以让您更轻松地打开或关闭此“功能”。