bashスクリプトに2つのソフトウェアバージョンチェックがありますが、期待どおりに機能しません。
DRUSH_VERSION="$(drush --version)"
echo ${DRUSH_VERSION}
if [[ "$DRUSH_VERSION" == "Drush Version"* ]]; then
echo "Drush is installed"
else
echo "Drush is NOT installed"
fi
GIT_VERSION="$(git --version)"
echo ${GIT_VERSION}
if [[ "GIT_VERSION" == "git version"* ]]; then
echo "Git is installed"
else
echo "Git is NOT installed"
fi
応答:
Drush Version : 6.3.0
Drush is NOT installed
git version 1.8.5.2 (Apple Git-48)
Git is NOT installed
その間、私が変わると
DRUSH_VERSION = "$ {drush --version)"
に
DRUSH_VERSION = "Drush Version:6.3.0"
それはで応答します
ダッシュがインストールされています
今のところ私は使用します
タイプ-pdrushの場合;
それでもバージョン番号を取得したいのですが。
修正できる問題がいくつかあります。まず、移植性に関心がない場合は、の=~
代わりに部分文字列一致演算子を使用する必要があります==
。それはgit version
内にありますgit version 1.8.5.2 (Apple Git-48)
。第二に、あなたは$
あなたの[[ "GIT_VERSION" == "git version" ]]
テストでを逃しています。
したがって、たとえば、次のようにテストを変更すると、部分文字列を照合できます。(注:=~
でのみ動作[[ ]]
オペレータ、そしてあなたは、任意のワイルドカードを削除する必要があります*
)。
if [[ "$DRUSH_VERSION" =~ "Drush Version" ]]; then
...
if [[ "$GIT_VERSION" =~ "git version" ]]; then
...
さらに、特定のバージョン番号ではなく、プログラムの存在を確認するだけの場合は、次のものを使用することをお勧めします。
if which $prog_name 2>/dev/null; then...
または複合コマンドを使用する:
which $prog_name && do something found || do something not found
例git
:
if which git 2>/dev/null; then
...
または
which git && echo "git found" || echo "git NOT found"
注:stderr
intoのリダイレクトは、システムに存在しない/dev/null
場合にエラーが画面全体に噴出するのを防ぐだけ$prog_name
です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加