Подтвердить что ты не робот

Используя bash, чтобы получить номер версии от подрывной деятельности

Я хочу написать оболочку script в bash для развертывания веб-сайтов из репозитория svn. Когда я развертываю веб-сайт, я называю экспортированный каталог имя_сайта-Rrevision_number. Я бы хотел, чтобы bash script автоматически переименовал экспортированный каталог, поэтому ему нужно узнать текущий номер версии из каталога экспорта. Если я запустил

$> svn info http://svn-repository/trunk

Path: trunk
URL: http://svn-repository/mystery/trunk
Repository Root: http://svn-repository/mystery
Repository UUID: b809e6ab-5153-0410-a985-ac99030dffe6
Revision: 624
Node Kind: directory
Last Changed Author: author
Last Changed Rev: 624
Last Changed Date: 2010-02-19 15:48:16 -0500 (Fri, 19 Feb 2010)

Число после строки Revision: - это то, что я хочу. Как это получить в переменной bash? Я выполняю строчный анализ вывода из команды svn info?

4b9b3361

Ответ 1

Используйте svnversion. Это выведет номер версии/диапазон с минимальным дополнительным трещиной

Ответ 2

REVISION=`svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //'`

Это просто, если неэлегантно.

Ответ 3

просто используйте одну команду awk. намного проще.

var=$(svn info http://svn-repository/trunk | awk '/^Revision:/{print $2}')

Ответ 4

Разбор строки "Редакция" не переносится в разных локалях. Например. с моей локалью это как:

...
Wersja: 6583
Rodzaj obiektu: katalog
Zlecenie: normalne
Autor ostatniej zmiany: ...
Ostatnio zmieniona wersja: 6583
Data ostatniej zmiany: 2013-03-21 11:33:44 +0100 (czw)
...

Вы не хотите разбирать это:)

Итак, лучший подход - использовать 'svnversion', как предлагалось oefe. Это инструмент, упомянутый для этой цели.

Ответ 5

Без использования grep или awk:

REVISION=`svn info --show-item=revision | sed 's/ //g'`

sed в конце - это просто удалить конечные пробелы.

Ответ 6

svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '

Выплевывает ревизию Используйте backticks в своей оболочке script для выполнения этого и присвойте результаты переменной:

REVISION=`svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '`

Ответ 7

Есть, вероятно, несколько десятков способов сделать это, но я бы пошел с чем-то простым:

revision="$(svn info http://svn-repository/trunk | grep "^Revision:" | cut -c 11-)"

Ответ 8

Это даст вам номер версии главы

svn info -r 'HEAD' | grep Revision | egrep -o "[0-9]+"

egrep является расширенным grep.

Ответ 9

REVISION=$(svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //p')
echo $REVISION