En étendant la réponse de Jeff Schaller , sautez complètement le pipeline et demandez simplement la représentation constante interne:
$ php -r 'echo PHP_VERSION;'
7.1.15
Vous pouvez étendre ce modèle pour obtenir plus ou moins d'informations:
$ php -r 'echo PHP_MAJOR_VERSION;'
7
Voir la liste PHP des constantes prédéfinies pour tous les disponibles.
Le principal avantage: il ne repose pas sur un format de sortie défini de php -v
. Étant donné qu'il s'agit des mêmes performances qu'une solution de pipeline, cela semble un choix plus robuste.
Si votre objectif est de tester la version, vous pouvez également utiliser ce modèle. Par exemple, ce code se fermera 0
si PHP> = 7, et 1
sinon:
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
Pour référence, voici les horaires de divers cas de test, commandés en premier:
$ 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
ou il pourrait y avoir de meilleures façons