Snažím se získat pouze konfigurační argumenty zkompilovaného nginx na Ubuntu 14.04 pomocí příkazového řádku.
Spuštění /usr/local/nginx/sbin/nginx -V
nám dá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
Což dává smysl.
Takže teď chci oříznout tento řádek, abych měl jen:
–s-http_ssl_module –with-http_stub_status_module –add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d –with-http_sub_module
Po zhlédnutí online se zdá, že buď
/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'
nebo
/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'
nebo
/usr/local/nginx/sbin/nginx -V | egrep -o '\\-\\-'
Ale všechny mají stejný výstup jako nginx -V
Čemu nerozumím špatně?
Přijatá odpověď:
Je tam :
používá se na každém řádku , takže s řádkem můžete zacházet jako s několika částmi oddělenými :
a ve vašem případě chcete 2. pole, kde je configure arguments
objeví se řetězec:
/usr/local/nginx/sbin/nginx -V 2>&1 | awk -F ':' '/configure arguments/{print $2}'
Jak bylo zmíněno v komentářích pod otázkou, výstup -V
přechází do chybového streamu, takže jsme jej museli převést do stdout
stream (což je to, co 2>&1
ano)