我有一个可以在 ubuntu 命令行中运行的程序 dbot。如果我从名为 dbot 的目录中从键盘向命令行输入“ ./dbot.sh any command ”,它就会运行并执行我想要的操作。
因此这有效 ~/dbot$ ./dbot.sh anycommand
我是一名初学者,编写了一个名为 dbot 的同一目录中的 python 3 程序 tragic.py。
如果我从 ubuntu 命令行通过 ~/dbot$ python3 tragic.py & 在后台运行 tragic.py,然后如果我复制并粘贴 ./dbot.sh anycommand,它就会起作用,dbot 也会执行我想要的操作。它必须在后台,否则粘贴后命令将不起作用,因此我使用 &。
但是我希望我的 python 程序 tragic.py 打印到命令行 ./dbot.sh anycommand 上,这样命令就会发送给 dbot,就像我输入或粘贴它一样。但是它在后台或前台都不起作用。
我曾尝试使用普通的打印语句和 sys.stdout.write() 以及带有和不带有 sys.stdout.flush() 的 sys.stdout.write() ,但没有成功
如何让 dbot 响应 tragic.py 在 ubuntu 命令行中打印的命令。我不明白为什么当我输入或粘贴它时它可以工作,但当 tragic.py 打印它或用 sys.stdout.write 输出它时却不行
答案1
您始终可以使用xargs
,即
echo '-l' | xargs ls
将有效执行ls -l
。因此,在您的例子中,它应该类似于./tragic.py | xargs ./dbot.sh
,即./tragic.py
命令的输出将用作./dbot.sh