Mở rộng câu trả lời của Jeff Schaller , bỏ qua đường ống hoàn toàn và chỉ yêu cầu biểu diễn hằng số nội bộ:
$ php -r 'echo PHP_VERSION;'
7.1.15
Bạn có thể mở rộng mẫu này để có thêm thông tin hoặc ít hơn:
$ php -r 'echo PHP_MAJOR_VERSION;'
7
Xem danh sách PHP của các hằng số được xác định trước cho tất cả có sẵn.
Lợi ích chính: nó không dựa vào định dạng đầu ra được xác định là php -v
. Với hiệu suất tương đương với giải pháp đường ống, thì có vẻ như đó là một lựa chọn mạnh mẽ hơn.
Nếu mục tiêu của bạn là kiểm tra phiên bản, thì bạn cũng có thể sử dụng mẫu này. Ví dụ: mã này sẽ thoát 0
nếu PHP> = 7 và 1
nếu không:
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
Để tham khảo, đây là thời gian cho các trường hợp thử nghiệm khác nhau, được đặt hàng nhanh nhất trước tiên:
$ 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
hoặc có thể có những cách tốt hơn