вывод команды не сохраняется в переменную - PullRequest
1 голос
/ 27 сентября 2019

Может ли кто-нибудь объяснить мне разницу между этими двумя случаями и сказать, почему $ b пусто?Спасибо.

$ a=$(uname -o)
$ echo $a
GNU/Linux
$ b=$(nginx -v)
nginx version: nginx/1.17.4
$ echo $b

$ _

Я ожидал использовать версию Nginx, установленную для загрузки исходного кода, примерно так:

$ wget http://nginx.org/download/nginx-$(nginx -v | cut -d"/" -f2).tar.gz
--2019-09-27 20:06:54--  http://nginx.org/download/nginx-.tar.gz
HTTP request sent, awaiting response... 404 Not Found

Использование: GNU bash, версия4.2.46 (2) -релиз (x86_64-redhat-linux-gnu)

1 Ответ

3 голосов
/ 27 сентября 2019

nginx записывает версию в stderr, а не в stdout.

Для захвата stderr вы можете перенаправить его в stdout:

b=$(nginx -v 2>&1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...