2012-08-03 149 views
9

我想捕獲到我的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

回答

16

如果將輸出發送到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