Saya perlu, dari skrip bash, memeriksa untuk melihat apakah permata Ruby tertentu diinstal.
Saya pikir saya bisa melakukan sesuatu seperti
if ! gem list <name>; then do_stuff; fi
tetapi pengujian pada baris perintah menggunakan echo $?
menunjukkan yang gem list <name>
mengembalikan 0 terlepas dari apakah nama sebenarnya ditemukan.
Apakah ini berarti saya harus menggunakan grep untuk memfilter keluaran daftar permata, atau adakah cara yang lebih baik untuk memeriksa apakah permata diinstal?
--version
, misalnya:gem list -i compass --version 0.12.4
.Tampaknya seolah-olah
gem spec
perintah akan gagal dengan kesalahan jika permata bernama tidak diinstal. Begitu:Saya tidak tahu apakah ini cara kanonik untuk menyelesaikan ini, tetapi ini berhasil.
sumber
Anda juga dapat menggunakan
kutipan penggunaanquery
sub-perintah untukgem
perintah.Juga akan mencari versi tertentu, menggunakan
-v
sakelar.sumber
gem query
: "Perintah permintaan adalah dasar untuk daftar dan perintah pencarian. Anda harus benar-benar menggunakan daftar dan mencari perintah saja. Perintah ini terlalu sulit untuk digunakan." ... tidak ingin membuat kebiasaan buruk di komunitas SO! :-)