Extendiendo la respuesta de Jeff Schaller , omita la tubería por completo y solo solicite la representación constante interna:
$ php -r 'echo PHP_VERSION;'
7.1.15
Puede extender este patrón para obtener más o menos información:
$ php -r 'echo PHP_MAJOR_VERSION;'
7
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 lo 1
contrario:
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
Como referencia, aquí hay tiempos para varios casos de prueba, ordenados primero más rápido:
$ time for (( i=0; i<1000; i++ )); do php -v | awk '/^PHP [0-9]/ { print $2; }' >/dev/null; done
real 0m13.368s
user 0m8.064s
sys 0m4.036s
$ time for (( i=0; i<1000; i++ )); do php -r 'echo PHP_VERSION;' >/dev/null; done
real 0m13.624s
user 0m8.408s
sys 0m3.836s
$ time for (( i=0; i<1000; i++ )); do php -v | head -1 | cut -f2 -d' ' >/dev/null; done
real 0m13.942s
user 0m8.180s
sys 0m4.160s
... | head -1
o podría haber mejores formas