Я хочу записать сценарий оболочки в ударе для развертывания веб-сайтов от репозитория SVN. Когда я развертываю веб-сайт, я называю экспортируемый каталог website_name-Rrevision_number. Я хотел бы, чтобы сценарий удара автоматически переименовал экспортируемый каталог, таким образом, он должен узнать о текущем числе пересмотра из каталога экспорта. Если я работаю
$> 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:
то, что я хочу. Как я получаю это в переменную удара? Сделайте я действительно представляю парсинг в виде строки вывода от svn info
команда?
Используйте svnversion. Это выведет номер/диапазон ревизий с минимальным количеством лишнего мусора
просто используйте одну команду awk. намного проще.
var=$(svn info http://svn-repository/trunk | awk '/^Revision:/{print $2}')
REVISION=`svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //'`
Это просто, хотя и неэлегантно.
svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '
Выводит ревизию Используйте обратные кавычки в сценарии оболочки, чтобы выполнить это и присвоить результаты переменной:
REVISION=`svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '`
Существует, вероятно, дюжина различных способов сделать это, но я бы выбрал что-то простое, например:
revision="$(svn info http://svn-repository/trunk | grep "^Revision:" | cut -c 11-)"