使用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'),我如何检索完整的匹配单词(带有版本的应用程序)?
答案 0 :(得分:1)
你可以循环你的变量(如果你不引用它):
for app in ${APPS}; do
if [[ "${app}" == myapp-a* ]]; then
echo ${app}
fi
done
答案 1 :(得分: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