Bash脚本捕获输出到终端

问题描述:

我想捕获到我的bash脚本(在一个变量中)某些命令的输出,它将输出打印到终端。我曾尝试以下:Bash脚本捕获输出到终端

TEST_OUT=`the_command ARG1` #Nope 

#Putting the line "the_command ARG1" into a separate script, testing2.sh, 

TEST_OUT=$(./testing2.sh) #Nope 

testing2.sh 
TEST_OUT=$? #Nope 

我100%肯定,当我跑...

> the_command ARG1 

...在一个终端,它打印到终端正是我想要的信息捕获。

谢谢你的帮助!

+1

标准错误输出似乎未被捕获到您的脚本中,因此它将被打印到终端。 – C2H5OH 2012-08-03 17:40:11

+1

如果输出发送到stderr,您需要将它重定向到stdout,然后才能将其捕获到var中。尝试'TEST_OUT = $(the_command ARG1 2>&1)' – 2012-08-03 17:42:33

+0

嗨,对不起,这里是新手bash和scripting ...有两种方法可以打印到终端,stderr和stdout吗? – JDS 2012-08-03 17:46:19

如果将输出发送到stderr,则需要将其重定向到stdout,然后才能将其捕获到var中。请尝试:

TEST_OUT=$(the_command ARG1 2>&1) 
+0

真棒我不知道关于区别黑体和stdout的差异。好东西。 – JDS 2012-08-03 17:50:13

+1

如果您只想* stderr,请使用'$(the_command ARG1 2>&1>/dev/null)'。 – chepner 2012-08-03 17:51:16