无法从 bash 中的范围获取最新项目
cannot get the latest item from a range in bash
我正在尝试阅读 Travis 中当前拉取请求的最新提交。我尝试了以下
echo "Latest commit is: $TRAVIS_COMMIT"
但是提交似乎不正确。所以使用了以下内容:
echo "commit range: ${TRAVIS_COMMIT_RANGE}"
我得到了:
commit range: 76acf3b3b213cd3f4f1e3a023e250ca23072fedd...474b7552e8a605b860df7b353dc8658d5025b0bf
所以现在我需要解析上述范围以仅获取如下字符串:
474b7552e8a605b860df7b353dc8658d5025b0bf
但是当我在 bash 中这样做时:
echo "commit range: ${TRAVIS_COMMIT_RANGE[-1]}"
我得到:
: bad array subscript
我该怎么做?有人可以帮忙吗?
$TRAVIS_COMMIT_RANGE 不是数组,它是单个字符串。
改为尝试参数扩展:
${TRAVIS_COMMIT_RANGE##*.} # Remove everything up to the last dot
#
从值的开头删除最短的匹配模式
##
类似,但使用最长的匹配模式
*.
作为模式意味着 "anything followed by a dot"
同样,%
从值的末尾删除。
我正在尝试阅读 Travis 中当前拉取请求的最新提交。我尝试了以下
echo "Latest commit is: $TRAVIS_COMMIT"
但是提交似乎不正确。所以使用了以下内容:
echo "commit range: ${TRAVIS_COMMIT_RANGE}"
我得到了:
commit range: 76acf3b3b213cd3f4f1e3a023e250ca23072fedd...474b7552e8a605b860df7b353dc8658d5025b0bf
所以现在我需要解析上述范围以仅获取如下字符串:
474b7552e8a605b860df7b353dc8658d5025b0bf
但是当我在 bash 中这样做时:
echo "commit range: ${TRAVIS_COMMIT_RANGE[-1]}"
我得到:
: bad array subscript
我该怎么做?有人可以帮忙吗?
$TRAVIS_COMMIT_RANGE 不是数组,它是单个字符串。
改为尝试参数扩展:
${TRAVIS_COMMIT_RANGE##*.} # Remove everything up to the last dot
#
从值的开头删除最短的匹配模式##
类似,但使用最长的匹配模式*.
作为模式意味着 "anything followed by a dot"
同样,%
从值的末尾删除。