命令行管道四个命令
Command line piping four commands
我正在编写两个 python 脚本,它们将与该学科教授提供的其他两个程序一起使用。
程序按此顺序运行:
fonte -> newCodificador -> canal -> newDescodificador
程序fonte
和canal
是教授做的,其他都是我的
问题是运行终端中的程序程序的输出是通过管道传递的|到最后一个。在将程序 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
或者类似的东西。
我正在编写两个 python 脚本,它们将与该学科教授提供的其他两个程序一起使用。
程序按此顺序运行:
fonte -> newCodificador -> canal -> newDescodificador
程序fonte
和canal
是教授做的,其他都是我的
问题是运行终端中的程序程序的输出是通过管道传递的|到最后一个。在将程序 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
或者类似的东西。