我有一个Python可执行文件,由其他人编写和编译,我只需要在自己的bash脚本中运行一次。 该程序使用基于文本的用户界面,因此在继续之前等待input,但启动时执行的关键操作是在我的bash脚本中需要的。 我知道一个混乱(奇怪)的程序,但不幸的是我没有任何其他的select。
我用强制终止信号强制closures了程序,但程序的TUI坚持输出到任何运行的地方。 我已经尝试将stdout和stderrredirect到/ dev / null,并在后台运行程序后缀后缀符号,但根本无法让它玩球。 我相信原因是程序产生其他进程,并且父进程的输出redirect不影响它们。 有没有什么技巧可以用来redirectsubprocess的所有输出呢?
程序可能会写入tty而不是stdout。 你也许可以使用expect或者其他一些使用expect或者类似方法的unbuffer脚本。
这是一个演示。 创build这个脚本并将其命名为“writetty”。 然后做chmod u+x writetty :
#!/bin/bash date > /dev/tty
现在试试看:
$ ./writetty Tue Jun 8 12:24:36 CDT 2010 $ ./writetty > /dev/null Tue Jun 8 12:24:46 CDT 2010 $ var=$(./writetty) Tue Jun 8 12:24:56 CDT 2010 $ unbuffer ./writetty > /tmp/writetty.out $ cat /tmp/writetty.out Tue Jun 8 12:25:06 CDT 2010 $ var=$(unbuffer ./writetty) $ echo $var Tue Jun 8 12:25:16 CDT 2010
您可以使用expect来响应程序的input请求而不是杀死它。