Mam program dbot, który działa w wierszu komend Ubuntu. Jeśli z katalogu o nazwie dbot wpisuję w linii poleceń z klawiatury „./dbot.sh dowolne polecenie”, działa i robi to, co chcę.
To działa ~ / dbot $ ./dbot.sh anycommand
Jestem początkującym i napisałem program tragic.py w języku Python 3, który znajduje się w tym samym katalogu o nazwie dbot.
Jeśli z wiersza poleceń ubuntu uruchomię w tle plik tragic.py przez ~ / dbot $ python3 tragic.py, a następnie skopiuję i wkleję dowolną komendę ./dbot.sh, to działa i dbot robi to, co chcę. Musi być w tle, inaczej polecenie nie będzie działać po wklejeniu, więc używam &.
Jednak chcę, aby mój program tragic.py w Pythonie wypisał komendę ./dbot.sh dowolną komendą, aby polecenie zostało wydane dbotowi tak, jakbym go wpisał lub wkleił. Jednak nie działa ani w tle, ani na pierwszym planie.
Próbowałem użyć normalnej instrukcji print i sys.stdout.write () zarówno z jak i bez sys.stdout.flush (), ale bez powodzenia
Jak sprawić, aby dbot odpowiedział na polecenie wydrukowane przez tragic.py w wierszu poleceń ubuntu. Nie rozumiem, dlaczego po wpisaniu lub wklejeniu działa, ale nie działa, gdy tragic.py drukuje go lub wysyła za pomocą sys.stdout.write
źródło
./dbot.sh $(python3 tragic.py)
?Odpowiedzi:
Zawsze możesz użyć
xargs
, tj.skutecznie wykona
ls -l
. Więc w twoim przypadku powinno to być coś takiego./tragic.py | xargs ./dbot.sh
, tzn. Wynik./tragic.py
polecenia będzie użyty jako argument./dbot.sh
źródło