Не могу понять, как закрыть оболочку bash
, которая была запущена через Popen
. Я нахожусь в окнах и пытаюсь автоматизировать некоторые вещи ssh. Это гораздо проще сделать это с помощью bash
оболочки, которая поставляется с мерзавцем, и поэтому я ссылающегося на него через Popen
следующим образом:Выход из оболочки bash, которая была запущена с Popen?
p = Popen('"my/windows/path/to/bash.exe" | git clone or other commands')
p.wait()
Проблема в том, что после того, как Баш выполняет команды ввода трубы в он, он не закрывается. Он остается открытым, заставляя мой wait
блокировать бесконечно.
Я попытался набросать команду «exit» в конце, но это не сработает.
p = Popen('"my/windows/path/to/bash.exe" | git clone or other commands && exit')
p.wait()
Но все же бесконечная блокировка на ожидание. После завершения своей задачи он просто сидит в подсказке bash, ничего не делая. Как заставить его закрыть?
Что с символом '|' здесь? Это не то, как вы передаете команды в bash. –
Кроме того, почему вы вызываете bash вообще, а не * напрямую * вызываете свои команды git из Python? Прямой маршрут упрощает обработку сигналов - это означает, что вы можете легко проверить статус или убить команду git самостоятельно, вместо того, чтобы иметь только дескриптор оболочки bash и не знать, что git (или другие подпроцессы под ним) делает. –
@CharlesDuffy это то, как вы выполняете команды в bash – Calum