Я хочу получить только версию php, установленную на CentOS.
Выход из 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
Я попробовал это следующее:
php -v | grep PHP | awk '{print $2}'
Но результат, который я получил, был:
7.1.16
(c)
Как я могу получить только 7.1.16?
... | head -1
или могут быть лучшие способыОтветы:
В моей системе:
as
grep PHP
соответствует каждой строке PHP, с которой он сталкивается.В
^PHP
означает «соответствовать только строке„PHP“ , когда он находится в начале строки».Очевидно, это работает, если выходной формат
php -v
является одинаковым для разных версий / сборок.Для справки, весь вывод был:
источник
Расширяя ответ Джеффа Шаллера , полностью пропустите конвейер и просто попросите внутреннее постоянное представление:
Вы можете расширить этот шаблон, чтобы получить больше или меньше информации:
Смотрите список предопределенных констант PHP для всех доступных.
Основное преимущество: он не зависит от определенного формата вывода
php -v
. Учитывая, что он примерно такой же производительности, что и конвейерное решение, он кажется более надежным выбором.Если ваша цель - проверить версию, вы также можете использовать этот шаблон. Например, этот код завершится,
0
если PHP> = 7, а в1
противном случае:Для справки, здесь приведены временные рамки для различных тестовых случаев, сначала упорядоченные быстрее всего:
источник
php -v
Если вы установили php через менеджер пакетов (например, RPM или yum), вы можете запросить версию оттуда:
Кроме того, вы можете попросить php сообщить вам свою версию :
источник
Есть разные способы, мне нравится использовать взгляд сзади:
или
источник
.
нормальное значение было бы бесполезным внутри класса символов, поэтому по умолчанию оно ужеПоскольку вы начали с
awk
, вотawk
решение:источник
Или
источник
awk '{print $2; exit}'
Если вы хотите сделать это только с одной передаваемой функцией, вы можете попробовать использовать sed следующим образом:
Сначала он удаляет любую строку, которая не начинается с
PHP
, затем обрезает версию из этой строки, предполагая, что это первая последовательность в формеx.y.z
.Или, если вы хотите что-то более близкое к исходному сценарию, просто поместите
^
перед шаблоном grep, чтобы искать только те строки, которые начинаются с PHP:источник
Я думаю, что это более чистое и элегантное решение (должно также работать в Windows):
Выход будет как
7.2.24
.источник
.PHP_MINOR_VERSION