2012-10-05 15 views
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')?

回答

1

您可以循環在你的變量(只要你不引用它):

for app in ${APPS}; do 
    if [[ "${app}" == myapp-a* ]]; then 
    echo ${app} 
    fi 
done 
+0

這解決我的問題 – aksamit

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 
+0

感謝。這些都是很好的例子。 – aksamit

相關問題