Php

如何使用 shell 命令僅獲取 PHP 的版本號?

  • March 5, 2021

我只想獲取安裝在 CentOS 上的 php 版本。

的輸出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?

擴展Jeff Schaller 的答案,完全跳過管道,只要求內部常量表示:

$ 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

如果您已經通過包管理器(例如 RPM 或 yum)安裝了 php,那麼您可以從那裡查詢版本:

rpm -q --queryformat="%{VERSION}" php

或者,你可以讓 php直接告訴你它的版本

php -r 'echo phpversion();'

引用自:https://unix.stackexchange.com/questions/471521