2011-03-24 97 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