Автоматический ввод командной строки из скрипта python в запущенный скрипт оболочки - PullRequest
1 голос
/ 05 июля 2019

У меня есть сценарий оболочки Python, который отформатирован путем импорта CMD и с командами, структурированными как do_*(self, arg). Сценарий отлично работает при вводе в командную строку, но я пытаюсь написать сценарий, который будет обрабатывать данные, определять, какую команду выполнять, и вводить команду в оболочку во время ее выполнения для выполнения требуемой команды. Возможно ли это, и если да, то как это можно сделать?

пример:

 #!/usr/bin/env python
class exampleShell(cmd.Cmd):
def do_exit(self, inp):
        print("Bye")
        return True
MyPrompt().cmdloop()

Итак, если я запустлю сценарий и введу команду exit в командной строке, он выведет «Пока», но я хочу иметь возможность запустить отдельный сценарий, который может отправлять команду выхода в сценарий, не вводя его сам.

1 Ответ

0 голосов
/ 05 июля 2019

Похоже, что вы пытаетесь написать интерпретатор команд и разрешить доступ своих команд к сценариям Python?

Попробуйте выделить общую часть и импортировать ее из интерпретатора или из других сценариев.

# commands.py

def foo(params): ...
def bar(params): ...
#!/usr/bin/env python
# interpreter; use it as a shell command / REPL.

import commands

class Shell(cmd.Cmd):
  def do_foo(self, params):
    return commands.foo(params)
  # etc
# another-script.py; use it to run complex custom logic.

import commands

def someLogic(x):
  if x > 1:
    commands.foo(x)
  else:
    commands.bar(x + 100)

Все еще трудно сказать, какое решение помогает, пока вы не объясните немного подробнее, какую проблему вы решаете real .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...