我试图从我的Travis-CI配置中的环境变量中提取信息,所以我正在寻找一个基于我的正则表达式执行此操作的1行linux命令。这是我正在尝试的内容:
- MAJOR_VERSION=`sed -i 's/[v?]((([\d]+)\.[\d]+)\.[\d]+)/$1/g' <<< ${TRAVIS_TAG}`
- MINOR_VERSION=`sed -i 's/[v?]((([\d]+)\.[\d]+)\.[\d]+)/$1.$2/g' <<< ${TRAVIS_TAG}`
- PATCH_VERSION=`sed -i 's/[v?]((([\d]+)\.[\d]+)\.[\d]+)/$1.$2.$./g' <<< ${TRAVIS_TAG}`
看起来sed
需要一个或多个文件,因为我收到错误sed: no input files
,而不是字符串。我怎么能让它期待一个字符串?
我的目标是采用语义版本标记(例如 - v12.34.56
或12.34.56
并提取版本号。
答案 0 :(得分:1)
目前尚不清楚为什么要使用sed。如果TRAVIS_TAG只包含“xx.xx.xx”形式的字符串,那么您只需阅读它:
IFS=. read MAJOR_VERSION MINOR_VERSION PATCH_VERSION <<< "$TRAVIS_TAG"
如果您担心要放弃的可能前导v
:
IFS=. read MAJOR_VERSION MINOR_VERSION PATCH_VERSION <<< "${TRAVIS_TAG#v}"