簡體   English   中英

如何在 bash 腳本中檢查機器上是否安裝了 gem?

[英]How to check if a gem installed on a machine in bash script?

我希望能夠從腳本運行系統命令

bundle exec rubocop

但前提是bundlerubocop gem 安裝並存在於機器上。 如果檢查這些 gem 的存在失敗,忽略該命令並退出。

如何在運行命令之前設置這些檢查? 也許我應該使用bundle --version看看命令是否崩潰? 先感謝您。

您可以像這樣 grep 已安裝的 gem

#!/bin/bash

if ! gem list --local | grep -q 'bundler'; then
  echo 'Please install bundler first'
  exit 1
fi

if ! gem list --local | grep -q 'rubocop'; then
  echo 'Please install rubocop first'
  exit 1
fi

bundle exec rubocop

之前建議的替代方法:不是測試是否安裝了 gem,而是測試是否有適當的命令可用(不一定相同):

#!/bin/bash

if type bundle >/dev/null 2>&1; then
  if type rubocop >/dev/null 2>&1; then
    bundle exec rubocop
  else
    echo "Rubocop seems to be not available"
    exit 1
  fi
else
  echo "Bundler seems to be not available"
  exit 1
fi

(這個腳本可能會更好,例如,報告所有丟失的命令,而不是只遇到第一個,但這只是一個簡單的草圖來說明這個想法)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM