Bash: перенаправить вывод init.d в переменную - PullRequest
1 голос
/ 24 марта 2011

Я пытаюсь перенаправить вывод команды 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

Ответы [ 2 ]

3 голосов
/ 24 марта 2011

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
#
2 голосов
/ 24 марта 2011

Вполне возможно, что это будет stderr вместо stdout.Вы можете попробовать что-то вроде этого:

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

для проверки.

...