Saya hanya ingin menginstal versi php di CentOS.
Output dari 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
Saya mencoba yang berikut ini:
php -v | grep PHP | awk '{print $2}'
Tapi output yang saya dapatkan adalah:
7.1.16
(c)
Bagaimana saya bisa mendapatkan 7.1.16 saja?
... | head -1
atau mungkin ada cara yang lebih baikJawaban:
Di sistem saya:
sebagai
grep PHP
cocok setiap string PHP itu pertemuan.The
^PHP
berarti "cocok hanya string 'PHP' ketika pada awal baris".Jelas, ini berfungsi jika format output
php -v
konsisten di seluruh versi / build.Untuk referensi, seluruh output adalah:
sumber
Memperluas jawaban Jeff Schaller , lewati pipeline sama sekali dan hanya meminta representasi konstanta internal:
Anda dapat memperluas pola ini untuk mendapatkan lebih banyak, atau kurang, informasi:
Lihat daftar PHP dari konstanta yang telah ditentukan sebelumnya untuk semua yang tersedia.
Manfaat utama: tidak bergantung pada format output yang ditentukan
php -v
. Mengingat itu tentang kinerja yang sama dengan solusi pipa, maka tampaknya pilihan yang lebih kuat.Jika tujuan Anda adalah untuk menguji versi, maka Anda juga dapat menggunakan pola ini. Misalnya, kode ini akan keluar
0
jika PHP> = 7, dan1
sebaliknya:Untuk referensi, berikut adalah pengaturan waktu untuk berbagai kasus pengujian, yang dipesan terlebih dahulu tercepat:
sumber
php -v
Jika Anda telah menginstal php melalui manajer paket (mis. RPM atau yum), maka Anda dapat meminta versi dari sana:
Atau, Anda dapat meminta php untuk memberi tahu Anda versinya secara langsung :
sumber
Ada berbagai cara, saya suka menggunakan tampilan di belakang:
atau
sumber
.
Makna normal akan menjadi tidak berguna di dalam kelas karakter, jadi itu sudah diperlakukan sebagai literal secara defaultSejak Anda mulai
awk
, inilahawk
solusinya:sumber
Atau
sumber
awk '{print $2; exit}'
Jika Anda ingin melakukannya hanya dengan satu fungsi saja yang sedang disalurkan, Anda dapat mencoba menggunakan sed seperti ini:
Pertama menghapus baris yang tidak dimulai
PHP
, kemudian klip versi dari baris itu dengan asumsi itu adalah urutan pertama dalam bentukx.y.z
.Atau, jika Anda ingin sesuatu yang lebih dekat dengan skrip asli Anda, cukup letakkan
^
di depan pola grep Anda untuk hanya mencari baris yang dimulai dengan PHP:sumber
Saya pikir ini solusi yang lebih bersih dan elegan (juga harus bekerja di Windows):
Outputnya akan seperti
7.2.24
.sumber
.PHP_MINOR_VERSION