Php
如何使用 shell 命令僅獲取 PHP 的版本號?
我只想獲取安裝在 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();'