Розширюючи відповідь Джеффа Шаллера , пропустіть конвеєр і просто попросіть внутрішнього постійного представлення:
$ 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
або можуть бути кращі способи