如何将stderr输出捕获到变量中?(针对Bash)

70

Bash如何将stderr输出捕获到变量中?

我想在我的Bash脚本中做类似这样的事情:

sh -c path/myExcecutable-bin 2>&1 =MYVARIABLE

如何将标准错误输出发送到变量?


2
这个 StackOverflow 帖子 应该能回答你的问题。 - Web User
查看其中的许多相关线程和多个解决方案 - ormaaj
1个回答

137

stdoutstderr同时保存到一个变量中:

MYVARIABLE="$(path/myExcecutable-bin 2>&1)"
注意,这会将标准输出和标准错误混合到同一个变量中。
要将仅stderr保存到变量中:
MYVARIABLE="$(path/myExcecutable-bin 2>&1 > /dev/null)"

13
我需要指出的是,你将会把标准错误和标准输出都保存到变量中。如果你只需要标准错误信息,请使用“2>&1 >/dev/null”。 - Igor Chubin
@IgorChubin 很好的观点。我最初的回答是基于 OP 想要做什么,但这并不一定是他们真正想要的。请看我的更改。 - Tim Pote
应该是“stdout stderr”,对吧? - Benjamin W.
不确定您的意思。 "stdout and stderr" 是答案的第一句话。 - Tim Pote
啊,我明白了。有一个编辑。是的,那应该是stdout,而不是stdin。 :) - Tim Pote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接