Um die Antwort von Jeff Schaller zu erweitern , überspringen Sie die gesamte Pipeline und fragen Sie nach der internen konstanten Darstellung:
$ php -r 'echo PHP_VERSION;'
7.1.15
Sie können dieses Muster erweitern, um mehr oder weniger Informationen zu erhalten:
$ php -r 'echo PHP_MAJOR_VERSION;'
7
In der PHP-Liste der vordefinierten Konstanten finden Sie alle verfügbaren Konstanten .
Der große Vorteil: Es kommt nicht auf ein definiertes Ausgabeformat von an php -v
. Da es ungefähr die gleiche Leistung wie eine Pipeline-Lösung hat, scheint es eine robustere Wahl zu sein.
Wenn Sie die Version testen möchten, können Sie auch dieses Muster verwenden. Dieser Code wird beispielsweise beendet, 0
wenn PHP> = 7 ist, und 1
ansonsten:
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
Als Referenz finden Sie hier die Timings für verschiedene Testfälle, die am schnellsten sortiert sind:
$ 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
oder es könnte bessere Möglichkeiten geben