Jeff Schaller'in cevabını genişleterek , boru hattını tamamen atlayın ve sadece dahili sabit temsili isteyin:
$ php -r 'echo PHP_VERSION;'
7.1.15
Daha fazla veya daha az bilgi almak için bu kalıbı genişletebilirsiniz:
$ php -r 'echo PHP_MAJOR_VERSION;'
7
Kullanılabilenler için önceden tanımlanmış sabitlerin PHP listesine bakın .
En büyük yararı: tanımlı bir çıktı biçimine bağlı değildir php -v
. Bir boru hattı çözümü ile yaklaşık aynı performans göz önüne alındığında, daha sağlam bir seçim gibi görünüyor.
Hedefiniz sürümü test etmekse, bu deseni de kullanabilirsiniz. Örneğin, 0
PHP> = 7 ise bu koddan çıkılacak , 1
aksi takdirde:
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
Referans için, aşağıda en hızlı sipariş edilen çeşitli test durumları için zamanlamalar şunlardır:
$ 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
ya da daha iyi yollar olabilir