コマンドラインを使用して、Ubuntu 14.04でコンパイルされたnginxの設定引数のみを取得しようとしています。
/usr/local/nginx/sbin/nginx -V
を実行すると、次のことがわかります。
nginx version: nginx/1.8.1
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_sub_module
理にかなっています。
だから今、私はちょうどこのようにこの行をカットしたい:
--with-http_ssl_module --with-http_stub_status_module --add-module =/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_sub_module
オンラインで見ると、次のように見えます
/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'
または
/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'
または
/usr/local/nginx/sbin/nginx -V | egrep -o '\\-\\-'
しかし、それらはすべてnginx -V
と同じだけを出力します
私は何が間違っていると理解していますか?
各行で:
が使用されているため、行を:
で区切られたいくつかの部分として扱うことができ、場合によってはconfigure arguments
文字列が表示される2番目のフィールドが必要です。
/usr/local/nginx/sbin/nginx -V 2>&1 | awk -F ':' '/configure arguments/{print $2}'
質問の下のコメントで述べたように、-V
の出力はエラーストリームに送られるため、stdout
ストリーム(2>&1
が行うこと)
出力が標準エラーになる可能性があります。リダイレクトする必要があります。
/usr/local/nginx/sbin/nginx -V 2>&1 | sed -n -e '/arguments/ s/.*\: *//p'
# ~~~~