1

bash を使用すると、デプロイされたアプリケーションを保持する文字列があります。

APPS="myapp-a-1.0.war myapp-b-1.1.war myapp-c-1.2-SNAPSHOT.war"

特定のアプリがデプロイされているかどうかを判断できます。

if [[ "$APPS" == *myapp-a* ]]
then
    echo "myapp-a is deployed, but we don't know the version."
fi

単語のプレフィックス (アプリケーション名、「myapp-a」など) しかない場合、完全に一致する単語 (アプリケーションとバージョン) を取得するにはどうすればよいですか?

4

2 に答える 2

1

単純な:

if [[ "$APPS" =~ myapp\-a([^war]*)war ]]; then
  echo "${BASH_REMATCH[0]} deployed"
fi

結果:

myapp-a-1.0.war deployed

バージョンのみが必要な場合:

if [[ "$APPS" =~ myapp\-a([^war]*)war ]]; then
  echo "${BASH_REMATCH[1]} deployed"
fi

結果:

-1.0. deployed

ダッシュ、ドットなどのアーティファクトのないバージョンが必要な場合:

if [[ "$APPS" =~ myapp\-a\-([^war]*)\.war ]]; then
  echo "${BASH_REMATCH[1]} deployed"
fi

結果:

1.0 deployed
于 2012-10-05T09:52:22.103 に答える
1

変数をループすることができます (クォートしない場合):

for app in ${APPS}; do
  if [[ "${app}" == myapp-a* ]]; then
    echo ${app}
  fi
done
于 2012-10-05T06:56:52.053 に答える