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
... | head -1
またはより良い方法があるかもしれません