我正在从一个bash脚本中调用第三方二进制可执行文件,但由于某种奇怪的原因,该可执行文件将其信息消息写入stderr
,将错误消息写入stdout
。(我想这是一个错误...)
在调用可执行文件时,如何反转这种行为呢?
我尝试过以下操作:
callExecutable 1>&2 2>&1
但是这似乎将所有输出都重定向到
stderr
而没有输出到 stdout
。我可能需要一个中间步骤?我正在从一个bash脚本中调用第三方二进制可执行文件,但由于某种奇怪的原因,该可执行文件将其信息消息写入stderr
,将错误消息写入stdout
。(我想这是一个错误...)
在调用可执行文件时,如何反转这种行为呢?
我尝试过以下操作:
callExecutable 1>&2 2>&1
stderr
而没有输出到 stdout
。我可能需要一个中间步骤?stderr
和 stdout
:callExecutable 3>&1 1>&2 2>&3
就像在编程中使用一个临时变量来交换另外两个变量一样:
temp = x
x = y
y = temp
callExecutable 3>&1 1>&2 2>&3
2>&1
,那么输出2
将与输出1
在同一个框中,因此当您执行1>&2
时,所有内容都会返回到错误流。3>&2 2>&1 1>&3
可以实现您所要求的。