2011-03-24 108 views
1

我嘗試將init.d命令的輸出重定向到一個變量而不顯示在屏幕上,但這不起作用。 例如這個工程:Bash:重定向init.d輸出變量

$> var=`uname -a` 
$> echo $var 
$> Linux 

但不是這樣的:

$> var=`/etc/init.d/nginx reload` 
$> the configuration file /etc/nginx/nginx.conf syntax is ok 
configuration file /etc/nginx/nginx.conf test is successful 
$> echo $var 
$> Reloading nginx configuration: nginx. 

,我們該怎麼做才能屏幕上無任何回報嗎? 謝謝。

Nico

回答

3

nginx -t在標準錯誤寫這些消息,而不是標準輸出,所以你需要捕捉那些太:

# var=`nginx -t 2>&1` 
# echo $var 
the configuration file /etc/nginx/nginx.conf syntax is ok configuration file /etc/nginx/nginx.conf test is successful 
# 
+0

它完美的工作,謝謝! – ncrocfer 2011-03-24 13:07:01

2

它是完全有可能它是stderr而不是stdout。你可以嘗試這樣的:

var=`/etc/init.d/nginx reload 2>&1` 

來測試。

+0

我想你忘了加上反引號 – 2011-03-24 11:34:06

+0

怪異。我把他們放進去,但他們沒有翻譯。 hmm – lsd 2011-03-24 13:25:02

+0

通過縮進四個空格來修復,這會打開代碼格式。 – sarnold 2011-03-25 07:32:32