我有两个用Prog1.c编写的程序(Prog2.cC),每个程序都有一个命令行参数。
Prog1.c将文件名作为参数,从文件中读取内容并在STDOUT(标准输出)屏幕上输出Prog2.c将数据作为参数并执行一些操作我想将Prog1.c的输出重定向到Prog2.c作为输入。
我试过遵循bash脚本,这会给我错误

#!/bin/bash
prog2 "`prog1 file.txt`"

我也试过不加引号,在这两种情况下,都会出现以下错误。
Prog2:: argument list too long.

最佳答案

要将命令的输出作为另一个命令的参数,可以使用反勾号:

prog2 "`prog1 file.txt`"

或者使用$()(我相信这是bash的一种更可取的方式):
prog2 "$(prog1 file.txt)"

如果要将prog1的STDOUT用作prog2的STDIN,请使用|(pipe)运算符:
prog1 | prog2

注意:当您想使用管道时,您需要修改prog2的代码,因为它需要从STDIN读取而不是命令参数(argv函数的main())有关如何执行此操作的示例,请参见How to read a line from the console in C?

07-24 14:36