не могу получить последний предмет из диапазона bash - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь прочитать последний коммит для текущего запроса тяги в Трэвисе. Я попробовал следующее

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

Как я могу это сделать? кто-нибудь может помочь?

1 Ответ

4 голосов
/ 25 марта 2020

$ TRAVIS_COMMIT_RANGE - это не массив, это одна строка.

Вместо этого попробуйте расширение параметра:

${TRAVIS_COMMIT_RANGE##*.}  # Remove everything up to the last dot
  • # удаляет самый короткий совпадающий шаблон из начала значения
  • ## работает аналогично, но использует самый длинный соответствующий шаблон
  • *., поскольку шаблон означает «все, что следует за точкой»

Аналогично, % удаляет из конца значения.

...