如何让程序将命令输出到 ubuntu 命令行,就像我输入的一样

如何让程序将命令输出到 ubuntu 命令行,就像我输入的一样

我有一个可以在 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

相关内容