0
我這樣做是在bash腳本:爲什麼這個正則表達式的捕獲組在bash中不工作?
#!/bin/bash
set -e
function getVersion {
REGEX="^$2-(.*?)\.ear$"
if [[ "$1" =~ $REGEX ]]; then
echo "${BASH_REMATCH[1]}"
else
echo "Cannot deduce artifact version from file name $1, exiting" >&2
exit 1
fi
}
MY_APP=app-1.3.4.ear
APP_VERSION=$(getVersion "$MY_APP" app)
echo "Version is $APP_VERSION"
我希望getVersion
返回1.3.4
,但它產生的錯誤訊息。爲什麼正則表達式不匹配?
你不能在bash中使用'''做一個非貪婪的匹配。 –
bash不支持使用非貪婪匹配'。*?' – rock321987
pcregrep命令支持非貪婪。 –