无法从 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"

同样,% 从值的末尾删除。