Saya mencoba untuk mendapatkan hanya argumen konfigurasi dari nginx yang dikompilasi di Ubuntu 14.04 menggunakan baris perintah.
Menjalankan /usr/local/nginx/sbin/nginx -V
memberi kita:
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
Yang masuk akal.
Jadi sekarang saya ingin memotong baris ini menjadi:
–dengan-http_ssl_module –dengan-http_stub_status_module –add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d –with-http_sub_module
Setelah mencari online, sepertinya
/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'
atau
/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'
atau
/usr/local/nginx/sbin/nginx -V | egrep -o '\\-\\-'
Tapi mereka semua hanya menghasilkan yang sama dengan nginx -V
Apa yang saya salah pahami?
Jawaban yang Diterima:
Ada :
digunakan pada setiap baris , sehingga Anda dapat memperlakukan baris sebagai beberapa bagian yang dipisahkan oleh :
, dan dalam kasus Anda, Anda menginginkan bidang ke-2 di mana configure arguments
string muncul:
/usr/local/nginx/sbin/nginx -V 2>&1 | awk -F ':' '/configure arguments/{print $2}'
Seperti yang disebutkan dalam komentar di bawah pertanyaan, output dari -V
pergi ke aliran kesalahan, jadi kami harus membuatnya pergi ke stdout
streaming ( yang 2>&1
tidak)