取编译参数时遇到的管道重定向问题

Posted 白-胖-子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了取编译参数时遇到的管道重定向问题相关的知识,希望对你有一定的参考价值。

问题

  • 使用nginx -V取编译参数
  • 使用管道 | 传给后续命令进行处理
  • 怎么取都取不出来

思考过程

是否语法问题

  • 开始一位awk语法出错
  • 换到sed依然出错
  • 再用grep还是出错

发现问题

  • 将ngxin -V 使用标准输出重定向到文件中
  • 发现标准输出重定向>保存的文件为空
  • 意识到问题的存在了
  • 使用ngxin &> 合并输出,则可以保存文件内容

解决问题

  • nginx -V这类提示信息归类到标准错误
[root@C8-189 src]# nginx -V &> grep configure
[root@C8-189 src]# nginx -V 2> grep configure
[root@C8-189 src]# nginx -V 1> nginxv.log 
nginx version: nginx/1.18.0
built by gcc 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC) 
built with OpenSSL 1.1.1g FIPS  21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
[root@C8-189 src]# nginx -V 2> nginxv.log 
[root@C8-189 src]# nginx -V 2>&1 | grep configure
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
  • 标准错误,所以不能直接用管道。
  • 刚掉坑了,需要把标准错误重定向到标准输出才可以通过管道传给后续命令。
cd /usr/local/src/nginx-1.20.1 &&  nginx -V 2>&1 | awk -F: '/^configure/ {print $2}' | xargs ./configure

以上是关于取编译参数时遇到的管道重定向问题的主要内容,如果未能解决你的问题,请参考以下文章

2023.6.2 Linux重定向与管道

重定向时如何在 Safari 中保留 uri 片段?

python 爬网页 遇到重定向怎么处理

命令输出(stdout,stderr)未重定向到管道

把GCC的编译信息重定向到一个文件

管道符重定向和环境变量