запустить команду Windows из Bash с выводом на стандартный выход? - PullRequest
0 голосов
/ 30 марта 2010

Ребята, я использую инструменты git, такие как git bisect run, которым нужно вызвать команду для сборки и тестирования моего проекта. Моя команда сделать это Nant, которая является программой Windows. Или скрипт build.cmd, который вызывает nant.

Легко заставить bash вызвать сборку nant для запуска.

Но самое сложное, как получить стандартный вывод, записанный в файл?

Я даже установил Windows PowerShell, чтобы попытаться запустить команду из bash.

Опять же, это работает, но стандартное заполнение вывода говорит, что "разрешение запрещено", Я пытаюсь прочитать его, пока идет сборка.

Обновление:

При запуске nant используется весь путь. Он установлен и работает нормально. Проблема в том, как получить стандартный вывод при запуске из bash.

Если запустить nant из командной строки Windows с «> build.out» в конце строки, вы получите стандарт. Но то же самое никогда не работает под Bash. Он просто говорит, что build.out заблокирован, разрешения запрещены.

Обновление:

Использование тройника, как указано ниже, также не решает проблему. В этом случае файл по-прежнему сообщает «доступ запрещен» при любых попытках прочитать его во время сборки. Но также программа tee никогда ничего не записывает в стандартный вывод.

Ответы [ 2 ]

1 голос
/ 15 апреля 2010

(Если я правильно понимаю ваш вопрос ...)

Вероятно, вы можете использовать команду 'tee', чтобы разделить вывод как на файл, так и на stdout. Строка echo I am building something | tee build.out будет одновременно выводить вывод на консоль и сохранять его в файл с именем "build.out".

Команда tee обычно доступна в Cygwin, а также, очевидно, в оболочке Bash, установленной msysgit (где я только что ее протестировал). Вот хорошая справочная страница для более подробной информации.

0 голосов
/ 06 февраля 2011

Хорошо, наконец-то решил это. Оказывается, скрипт сборки nant использовал функцию git для удаления всех игнорируемых файлов для очистки. Это было удаление файла build.out может вызвать эти странные проблемы. Теперь процесс записывает файл build.out в родительский каталог, чтобы он не удалялся, и теперь все работает гладко, как и ожидалось.

...