Расширяя ответ Джеффа Шаллера , полностью пропустите конвейер и просто попросите внутреннее постоянное представление:
$ php -r 'echo PHP_VERSION;'
7.1.15
Вы можете расширить этот шаблон, чтобы получить больше или меньше информации:
$ php -r 'echo PHP_MAJOR_VERSION;'
7
Смотрите список предопределенных констант PHP для всех доступных.
Основное преимущество: он не зависит от определенного формата вывода php -v
. Учитывая, что он примерно такой же производительности, что и конвейерное решение, он кажется более надежным выбором.
Если ваша цель - проверить версию, вы также можете использовать этот шаблон. Например, этот код завершится, 0
если PHP> = 7, а в 1
противном случае:
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
Для справки, здесь приведены временные рамки для различных тестовых случаев, сначала упорядоченные быстрее всего:
$ 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
или могут быть лучшие способы