我陷入一种奇怪的情况:我试图用sed提取nginx的版本,但它不起作用,只有字符串版本才有效:
[root@hostname~]# echo $(nginx -v) | sed -n 's/nginx version: nginx\///p'
nginx version: nginx/1.16.1
[root@hostname~]# nginx -v | sed -n 's/nginx version: nginx\///p'
nginx version: nginx/1.16.1
[root@hostname~]# echo 'nginx version: nginx/1.16.1' | sed -n 's/nginx version: nginx\///p'
1.16.1
任何线索?
您需要引用它并将stderr重定向到stdout:
echo "$(nginx -v 2>&1)" | sed -n 's/nginx version: nginx\///p'
需要报价,因为nginx -v
输出中有空格。
nginx -v |& sed 's/nginx version: nginx\///'
1.14.2
|&
部分是经典的[[pipe,但使用特殊的STDERR
技巧将STDOUT
重定向到&
。
nginx -v
输出在错误输出上,也称为STDERR
。 awk
:nginx -v |& awk -F '/' '{ print $2 }'