命令行管道四个命令

Command line piping four commands

我正在编写两个 python 脚本,它们将与该学科教授提供的其他两个程序一起使用。

程序按此顺序运行:

fonte -> newCodificador -> canal -> newDescodificador

程序fontecanal是教授做的,其他都是我的

问题是运行终端中的程序程序的输出是通过管道传递的|到最后一个。在将程序 newCodificador 的输出传递给 canal 之前,我需要读取输出的长度,然后作为程序的参数传递。

必须是这样的:

./fonte 1000 | python newCodificador.py | ./canal <<lenght of the output of newCodificador>> | python newDescodificador.py

首先,正如您所描述的,make 对于这个问题没有用。

其次,您无法使用单一管道解决此问题。管道通过同时调用所有程序来工作,并将它们的 input/output 连接在一起。但是在 newCodificador.py 程序完成之前你不能启动 canal 程序,因为在那之前你不知道输出会有多长时间。

必须 运行 这些分两步进行:第一步是:

./fonte 1000 | python newCodificador.py > tmpfile

那么第二步就是:

./canal $(wc -c tmpfile) < tmpfile | python newDescodificador.py

或者类似的东西。