Bash:在变量中重定向init.d输出

时间:2011-03-24 11:24:26

标签: bash nginx sh

我尝试将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.

我们如何才能在屏幕上返回任何内容? 感谢。

尼科

2 个答案:

答案 0 :(得分: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
#

答案 1 :(得分:2)

它完全有可能是stderr而不是stdout。你可以尝试这样的事情:

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

进行测试。