Quiero obtener solo la versión de php instalada en CentOS.
Salida de 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
Intenté lo siguiente:
php -v | grep PHP | awk '{print $2}'
Pero el resultado que obtuve fue:
7.1.16
(c)
¿Cómo puedo obtener solo 7.1.16?
... | head -1
o podría haber mejores formasRespuestas:
En mi sistema:
como
grep PHP
coincide con cada cadena PHP que encuentra.Los
^PHP
medios "coinciden solo con la cadena 'PHP' cuando está al comienzo de una línea".Obviamente, esto funciona si el formato de salida de
php -v
es consistente en todas las versiones / compilaciones.Como referencia, todo el resultado fue:
fuente
Extendiendo la respuesta de Jeff Schaller , omita la tubería por completo y solo solicite la representación constante interna:
Puede extender este patrón para obtener más o menos información:
Consulte la lista PHP de constantes predefinidas para ver todas las disponibles.
El principal beneficio: no se basa en un formato de salida definido de
php -v
. Dado que tiene el mismo rendimiento que una solución de tubería, parece una opción más sólida.Si su objetivo es probar la versión, también puede usar este patrón. Por ejemplo, este código saldrá
0
si PHP> = 7, y de lo1
contrario:Como referencia, aquí hay tiempos para varios casos de prueba, ordenados primero más rápido:
fuente
php -v
Si ha instalado php a través del administrador de paquetes (por ejemplo, RPM o yum), puede consultar la versión desde allí:
Alternativamente, puede pedirle a php que le diga su versión directamente :
fuente
Hay diferentes maneras, me gusta usar mirar hacia atrás:
o
fuente
.
El significado normal sería inútil dentro de una clase de caracteres, por lo que ya se trata como literal por defectoDesde que comenzó
awk
, aquí hay unaawk
solución:fuente
O
fuente
awk '{print $2; exit}'
Si desea hacerlo con una sola función canalizada, puede intentar usar sed de esta manera:
Primero elimina cualquier línea que no comience
PHP
, luego recorta la versión de esa línea asumiendo que es la primera secuencia en forma dex.y.z
.O, si desea algo más cercano a su script original, simplemente coloque
^
el frente de su patrón grep para buscar solo líneas que comiencen con PHP:fuente
Creo que esta es una solución más limpia y elegante (también debería funcionar en Windows):
La salida sería como
7.2.24
.fuente
.PHP_MINOR_VERSION