пакетный скрипт для получения номера ревизии из svn

У меня установлен GnuWin32, поэтому я пытаюсь создать пакетный файл с командами Linux, чтобы получить номер версии из SVN и записать этот номер версии в файл. На данный момент у меня есть:

svn info | grep -i "Revision" | cut -d" " -f2 | tr -d '\n'>> %~dp0../../Include/Version.hpp

Однако эта команда всегда будет давать мне номер версии SVN, но за ней следует обучающая новая строка, что дает мне следующее:

// Version.hpp
"some revision #" << followed by a '\n'
     << a new line is here

Надеюсь, я прояснил свою проблему. Кто-нибудь знает, почему это происходит, когда команда запускается из командного файла, а не когда я выполняю ее прямо в консоли? Как я могу это исправить, чтобы команды linux не добавляли новую строку обучения при записи номера версии в файл?

Спасибо за любые идеи.


person czchlong    schedule 11.11.2011    source источник
comment
Интересный вопрос. Хотя, вероятно, это бесполезно, я пробовал это на Mac с bash 3, и ваша техника добавления tr -d '\n' в конец конвейера перед добавлением в файл отлично работает для меня как из командной строки , так и в сценарий оболочки. Возможно, вы обнаружили проблему с GnuWin32. Я не думаю, что это имеет какое-то отношение к SVN. Сначала посмотрите, сможете ли вы продублировать проблему с помощью простого текста.   -  person Ray Toal    schedule 11.11.2011


Ответы (1)


Странно ... Может быть, новая строка в конце идет от перенаправления. Вы пробовали это:

echo -n $(svn info | grep -i "Revision" | cut -d" " -f2 | tr -d '\n') >> %~dp0../../Include/Version.hpp

Однако, попробовав на моей Linux-станции, оба решения у меня работают нормально! Используйте родную систему Linux :-p!

person morandg    schedule 11.11.2011
comment
ну, ничего не работает, ребята :( Я смог отследить проблему с помощью команды cut. Вы, ребята, знаете, как управлять вводом / выводом консоли в консоли dos? - person czchlong; 11.11.2011