ขยายคำตอบของ 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
หรืออาจจะมีวิธีที่ดีกว่า