我只想获取安装在 CentOS 上的 php 版本。
的输出php -v
PHP 7.1.16 (cli) (built: Mar 28 2018 13:19:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
我尝试了以下操作:
php -v | grep PHP | awk '{print $2}'
但我得到的输出是:
7.1.16
(c)
我怎样才能只得到 7.1.16?
扩展Jeff Schaller 的答案,完全跳过管道,只要求内部常量表示:
您可以扩展此模式以获取更多或更少的信息:
查看所有可用的预定义常量的 PHP 列表。
主要好处:它不依赖于定义的输出格式
php -v
. 鉴于它与管道解决方案的性能大致相同,那么它似乎是一个更强大的选择。如果您的目标是测试版本,那么您也可以使用此模式。例如,
0
如果 PHP >= 7,此代码将退出,1
否则:作为参考,以下是各种测试用例的时间安排,排序最快:
如果您已经通过包管理器(例如 RPM 或 yum)安装了 php,那么您可以从那里查询版本:
或者,你可以让 php直接告诉你它的版本:
在我的系统上:
as
grep PHP
匹配它遇到的每个PHP 字符串。^PHP
意思是“仅匹配位于行首的字符串'PHP'” 。显然,如果 的输出格式
php -v
在版本/构建之间是一致的,则此方法有效。作为参考,整个输出是:
有不同的方法,我喜欢用look behind:
或者
既然您从 开始
awk
,这里有一个awk
解决方案:或者
如果您只想通过管道传输单个函数来执行此操作,则可以尝试像这样使用 sed:
首先它删除任何不以 开头的行
PHP
,然后从该行剪辑版本,假设它是 形式的第一个序列x.y.z
。或者,如果您想要更接近原始脚本的内容,只需将
^
grep 模式放在前面,只查找以 PHP 开头的行:我认为这是更干净和优雅的解决方案(也应该在 Windows 中工作):
输出就像
7.2.24
.输出将是 PHP 7.1.7
在 Ubuntu 18.04LTS 上测试